This assumes you have installed Docker on Linux and Docker is running. The docker run command is used to run a command against a container. It's also important to recognize that if there is no container for the application being run, the image will be pulled down and the container will be created. For this reason, before issuing the docker run command, you'll want to use the docker images command to return the list of images, like this.
docker images REPOSITORY TAG IMAGE ID CREATED SIZE foo latest 105b54dc64f1 32 hours ago 196.7 MB
A Docker image contains the code used to create a Docker container, such as creating a Nginx web server, or a mySQL server, or a home grown app, and the list goes on. In this way, an image is like a template used to create a container. An image is kind of like a virtual machine, but much more light weight, using significantly less storage a memory (containers are usually megabytes in size).
There are various ways to pull down an image:
- Using the docker pull command (as-is image as-is is pulled down)
- Using the docker run command (as-is image is pulled down and container is created/started)
- Using the docker build command (image can be customized)
- Using the docker stack deploy command (Docker Compose)
And the docker ps command to list the containers.
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d937372c09ab9 b939aa938add9913 "/docker-entrypoin..." 6 minutes ago Up 30 seconds 0.0.0.0:12345->12345/tcp
In this example, the docker run command is used to pull the hello-world image from Docker hub.
docker run hello-world
Something like this should be returned.
Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world b8dfde127a29: Pull complete Digest: sha256:5122f6204b6a3596e048758cabba3c46b1c937a46b5be6225b835d091b90e46c 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/
The docker images command should show that there is now a hello-world image.
~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest d1165f221234 3 months ago 13.3kB
The --name option can be used to specify the name of the container. In this example, the container will be named foo.
docker run --name foo hello-world
The docker ps command should show that the container is named foo.
~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6a55b434f6a3 hello-world "/hello" 11 seconds ago Exited (0) 10 seconds ago foo