Docker
In this tutorial we will learn about some of the important Docker commands.
docker run
To create/run a containerdocker run -d
To run a container in detach modedocker ps
To list all running containersdocker ps -a
To list all containersdocker stop
To stop a containerdocker start
To start a containerdocker rm
To remove a containerdocker image ls
To list all imagesdocker rmi
To remove an imagedocker inspect
To inspect a docker container and docker imagedocker logs
To fetch the logs of a containerdocker run
To create/run a containerWe use the docker run
command to run a docker container from a docker image.
In the following example we are going to run a docker container using the hello-world
official docker image.
docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:6e8b6f026e0b9c419ea0fd02d3905dd0952ad1feea67543f525c73a0a790fefb
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Note! Docker first checks if the image is present locally. If the image is not found on our machine then Docker pulls the image from the DockerHub.
If we try to run the docker run command again and use the hello-world image then this time the container will start quicker as the image is already downloaded on our machine.
docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To exit out of a running docker container, use Ctrl+C.
docker run -d
To run a container in detach modeWhen we run a container using docker run
command then the container runs in attach mode or foreground and takes up the terminal and we cannot run any other command till we stop the container by pressing Ctrl+C.
In order to run the container in detach mode or background we use -d
flag like docker run -d DOCKER_IMAGE_NAME
command.
In the following example we are running docker image in detach mode.
docker run -d nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
3f9582a2cbe7: Pull complete
9a8c6f286718: Pull complete
e81b85700bc2: Pull complete
73ae4d451120: Pull complete
6058e3569a68: Pull complete
3a1b8f201356: Pull complete
Digest: sha256:aa0afebbb3cfa473099a62c4b32e9b3fb73ed23f2a75a65ce1d4b4f55a5c2ef2
Status: Downloaded newer image for nginx:latest
04cfbdbd3ab064a99a37a512419e39ab6d773a14c67b33674f44e0d2c25e0d17
docker ps
To list all running containersWe use the docker ps
command to list all the running containers.
In the following example we do not have any running containers on our local machine.
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
In the following example we are running a container in detach mode and then listing all the running processing.
➜ docker run -d nginx
d386e76309a56a630910ad29276fda63e87874ca694100bb3541e127b04de951
➜ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d386e76309a5 nginx "/docker-entrypoint.…" 6 seconds ago Up 5 seconds 80/tcp naughty_poitras
docker ps -a
To list all containersWe use the docker ps -a
command to list all the containers either running or stopped.
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bbba20f4005b hello-world "/hello" 6 minutes ago Exited (0) 6 minutes ago optimistic_williamson
fb107142026e hello-world "/hello" 10 minutes ago Exited (0) 10 minutes ago hardcore_cori
In the above example we can see we have two containers that ran and then exited few minutes ago.
docker stop
To stop a containerWe use the docker stop CONTAINER_ID
or docker stop CONTAINER_NAME
command to stop a container.
In the following example we have stopped a container by its container Id.
docker stop bbba20f4005b
bbba20f4005b
We can stop multiple containers by providing container Ids separated by space.
docker stop bbba20f4005b fb107142026e
bbba20f4005b
fb107142026e
In the following example we are stopping containers by their name.
docker stop optimistic_williamson hardcore_cori
optimistic_williamson
hardcore_cori
docker start
To start a containerTo start a stopped container we can run the docker start CONTAINER_ID
or docker start CONTAINER_NAME
command.
In the following example the nginx container is stopped and we are going to start it.
➜ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fbf69e8a1f2f nginx "/docker-entrypoint.…" 2 minutes ago Exited (0) 7 seconds ago jolly_elgamal
Restarting nginx container.
➜ docker start fbf69e8a1f2f
fbf69e8a1f2f
➜ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fbf69e8a1f2f nginx "/docker-entrypoint.…" 3 minutes ago Up 3 seconds 80/tcp jolly_elgamal
docker rm
To remove a containerWe use the docker rm CONTAINER_ID
or docker rm CONTAINER_NAME
command to remove a container.
In the following example we are first listing all the containers and then removing them by container id and then by container name.
➜ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bbba20f4005b hello-world "/hello" 17 minutes ago Exited (0) 17 minutes ago optimistic_williamson
fb107142026e hello-world "/hello" 20 minutes ago Exited (0) 20 minutes ago hardcore_cori
➜ docker rm bbba20f4005b
bbba20f4005b
➜ docker rm hardcore_cori
hardcore_cori
➜ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker image ls
To list all imagesWe use the docker image ls
command to list all the images downloaded on our machine.
In the following example we are listing all the downloaded images on our machine.
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 17 months ago 13.3kB
docker rmi
To remove an imageWe use the docker rmi IMAGE_ID
and docker rmi IMAGE_NAME
command to remove an image from our machine.
In the following example we are removing a docker image by its name.
docker rmi hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:6e8b6f026e0b9c419ea0fd02d3905dd0952ad1feea67543f525c73a0a790fefb
Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
Deleted: sha256:e07ee1baac5fae6a26f30cabfe54a36d3402f96afda318fe0a96cec4ca393359
Note! We must first stop the containers using the image we want to remove/delete.
docker inspect
To inspect a docker container or docker imageWe run the docker inspect DOCKER_CONTAINER_ID
or docker inspect DOCKER_CONTAINER_NAME
to inspect a docker container.
Similarly, we run the docker inspect DOCKER_IMAGE_NAME
to inspect a docker image.
The default output of this command is in JSON format like the following.
➜ docker inspect hello-world
[
{
"Id": "sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412",
"RepoTags": [
"hello-world:latest"
],
"RepoDigests": [
"hello-world@sha256:6e8b6f026e0b9c419ea0fd02d3905dd0952ad1feea67543f525c73a0a790fefb"
],
"Parent": "",
"Comment": "",
"Created": "2021-09-23T23:47:57.442225064Z",
"Container": "8746661ca3c2f215da94e6d3f7dfdcafaff5ec0b21c9aff6af3dc379a82fbc72",
"ContainerConfig": {
"Hostname": "8746661ca3c2",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) ",
"CMD [\"/hello\"]"
],
"Image": "sha256:b9935d4e8431fb1a7f0989304ec86b3329a99a25f5efdc7f09f3f8c41434ca6d",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {}
},
"DockerVersion": "20.10.7",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/hello"
],
"Image": "sha256:b9935d4e8431fb1a7f0989304ec86b3329a99a25f5efdc7f09f3f8c41434ca6d",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 13256,
"VirtualSize": 13256,
"GraphDriver": {
"Data": {
"MergedDir": "/var/lib/docker/overlay2/88ad13d8f49a90be11a3d28b4af2f8b02d3a4ff7cd02791fba7a0dcd6bc8d9be/merged",
"UpperDir": "/var/lib/docker/overlay2/88ad13d8f49a90be11a3d28b4af2f8b02d3a4ff7cd02791fba7a0dcd6bc8d9be/diff",
"WorkDir": "/var/lib/docker/overlay2/88ad13d8f49a90be11a3d28b4af2f8b02d3a4ff7cd02791fba7a0dcd6bc8d9be/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:e07ee1baac5fae6a26f30cabfe54a36d3402f96afda318fe0a96cec4ca393359"
]
},
"Metadata": {
"LastTagTime": "0001-01-01T00:00:00Z"
}
}
]
docker logs
To fetch the logs of a containerWe run the docker logs CONTAINER_NAME
or docker logs CONTAINER_ID
to check the logs of the container.
In the following example we have container logs of hello-world image.
➜ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ac4f8cca0533 hello-world "/hello" 16 minutes ago Exited (0) 16 minutes ago confident_pare
➜ docker logs ac4f8cca0533
Hello from Docker!
This message shows that your installation appears to be working correctly.
ADVERTISEMENT