Docker How To Run A Container

Docker How To Run A Container

Reading time1 min
#Docker#Containers#DevOps#DockerRun#ContainerManagement#Nginx

Mastering Docker Container Execution: Practical Steps to Run Your First Container Efficiently

Forget the abstractions—let's get hands-on and demystify Docker container execution from the ground up, cutting through hype to reveal the essential commands and configurations you actually need.

Running a Docker container is the foundational skill for modern development and deployment workflows, enabling consistent environment replication and streamlined application delivery. Whether you're a developer, DevOps engineer, or just Docker-curious, mastering how to launch and manage containers efficiently is your first step toward harnessing Docker's full power.


What Is a Docker Container, Anyway?

Before diving into commands, let's set the stage. A Docker container is a lightweight, standalone, and executable package including everything needed to run a piece of software—code, runtime, system tools, libraries, and settings. Unlike virtual machines, containers share the host OS kernel, making them faster and more resource-efficient.

When you run a container, you're essentially launching an isolated environment from an image where your app lives and runs consistently anywhere.


Step 1: Install Docker

If you haven't already:

  • Windows/macOS: Download Docker Desktop from docker.com.
  • Linux: Follow your distribution’s Docker Engine installation guide (Ubuntu example).

Verify installation:

docker --version

You should see something like:

Docker version 24.0.2, build 123abc

Step 2: Pull an Image (Your Container's Blueprint)

Docker images contain the filesystem and application layers. To run a container, you first need an image.

Let's say you want to run an Nginx web server:

docker pull nginx

This fetches the official Nginx image from Docker Hub.


Step 3: Run Your First Container!

Now, launch a container from the image you just pulled:

docker run nginx

What happened?

  • Docker created a container and started Nginx inside it.
  • But almost immediately, it likely stopped and exited.

Why? Because containers run foreground processes by default, and if the main process terminates, so does your container.

Nginx by default runs in daemon mode in its image, which causes Docker to think the process finished.

To keep your container running, start Nginx in the foreground:

docker run -d nginx

Explanation:

  • -d means detached mode — run the container in the background.
  • Now, the container keeps running.

Check running containers:

docker ps

You should see your Nginx container listed.


Step 4: Map Ports to Access Your Container

Nginx inside the container listens on port 80, but Docker containers are isolated, so expose this port to your host machine.

docker run -d -p 8080:80 nginx
  • -p 8080:80 maps your machine’s port 8080 to container’s port 80.
  • You can now open your browser and visit: http://localhost:8080

You should see the default Nginx welcome page—your container is running and accessible!


Step 5: Name Your Container for Easier Management

Assign a name with --name so you don't have to use autogenerated container IDs:

docker run -d -p 8080:80 --name my-nginx nginx

Check running containers again:

docker ps

Step 6: Managing Your Container

Stop your container by name:

docker stop my-nginx

Remove it:

docker rm my-nginx

Step 7: Run Containers with Interactive Terminals

Sometimes, you want to interact inside the container shell, for example to explore or debug:

docker run -it ubuntu /bin/bash
  • -it connects your terminal to container’s STDIN and STDOUT.
  • ubuntu is the image.
  • /bin/bash starts a shell session.

You now have a command line inside an Ubuntu container. Exit anytime by typing exit.


Step 8: Run Containers With Volumes to Persist Data

Containers are ephemeral. To keep data outside containers, mount volumes:

docker run -d -p 8080:80 -v /my/local/html:/usr/share/nginx/html:ro --name webserver nginx
  • -v /my/local/html:/usr/share/nginx/html:ro mounts your local html folder to Nginx’s web root, read-only.
  • Changes you make locally are reflected in the container.

Summary: Essential Docker Run Flags You Need

FlagDescriptionExample
-dDetached mode (run in background)docker run -d nginx
-pPort mapping host:container-p 8080:80
--nameGive your container a memorable name--name my-nginx
-itInteractive, terminal attacheddocker run -it ubuntu /bin/bash
-vMount volumes for persistent storage-v /host/path:/container/path

Wrapping Up

Running your first Docker container is simple but key to unlocking containerized development and deployment. Remember the workflow: choose/import an image → configure options (ports, volumes, names) → run container → interact/manage.

By mastering the docker run command and its flags, you'll create reliable, reusable, and efficient development environments or production services—without wrestling with complex VMs or inconsistent setups.


Next Steps:

  • Explore Docker Compose to orchestrate multi-container apps.
  • Learn Dockerfile basics to build your own images.
  • Automate container lifecycle with scripts or CI/CD tools.

Until then, start experimenting with different images and configurations to deepen your Docker muscle memory!


Happy containerizing!