Skip to content

Docker containers

A docker container is process than runs an instance of a docker image, with customised settings, in an isolated environment.

It is possible to start multiple containers running the same image. One reason for this is clustering.

The docker daemon, dockerd, manages docker containers on the docker host system.

When creating a container, various options can be used to configure and isolate the container. For a full list of options see:

Terminal window
$ docker container create --help

Having a naming convention helps with debugging and managing containers. Give each docker container a unique name using the --name option

Terminal window
$ docker container create --name web1 httpd:2.4
Unable to find image 'httpd:2.4' locally
2.4: Pulling from library/httpd
bf5952930446: Pull complete
3d3fecf6569b: Pull complete
b5fc3125d912: Pull complete
679d69c01e90: Pull complete
76291586768e: Pull complete
Digest: sha256:3cbdff4bc16681541885ccf1524a532afa28d2a6578ab7c2d5154a7abc182379
Status: Downloaded newer image for httpd:2.4
0963ab77c1cde9a69c5a07149df3c1053da30179ce46eca1a0741c1d3543f3c4

The above container is

  • running an httpd:2.4 image
  • has a container ID of 0963ab77c1cde9a69c5a07149df3c1053da30179ce46eca1a0741c1d3543f3c4
  • and has a user-friendly container name of web1

To see running containers on the docker host, use docker container ls

Terminal window
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Note that the newly created container does not appear as it’s status is not running.

Instead, use the -a or --all option to see it.

Terminal window
$ docker container ls --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0963ab77c1cd httpd:2.4 "httpd-foreground" About a minute ago Created web1

To start it, run docker container start

Terminal window
$ docker container start web1
web1

Now it will appear in the list

Terminal window
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0963ab77c1cd httpd:2.4 "httpd-foreground" 3 minutes ago Up 31 seconds 80/tcp web1

To run a container, i.e. create and start at the same time, use docker container run

Terminal window
$ docker container run --name web2 --detach httpd:2.4
3cf63678cf607f620e9dc2f822c98eee4e7f760ac26b569718f077f754970b2f

The above will start another container that is

  • running the httpd:2.4 image
  • has been given a container ID of 3cf63678cf607f620e9dc2f822c98eee4e7f760ac26b569718f077f754970b2f
  • has a user-friendly container name of web2

The -d or --detach option is required to run the container in the background.

Terminal window
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3cf63678cf60 httpd:2.4 "httpd-foreground" 4 minutes ago Up 4 minutes 80/tcp web2
0963ab77c1cd httpd:2.4 "httpd-foreground" 9 minutes ago Up 6 minutes 80/tcp web1

Use docker container stop

Terminal window
$ docker container stop web1
web1
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3cf63678cf60 httpd:2.4 "httpd-foreground" 6 minutes ago Up 6 minutes 80/tcp web2
0963ab77c1cd httpd:2.4 "httpd-foreground" 11 minutes ago Exited (0) 3 seconds ago web1

web1 has been stopped.

Terminal window
$ docker container rm web1
web1