Docker: Run Image as Container

The docker run command serves for creating containers from images.

In this article i will show how to run a Docker image as a container on the example of the official latest base image of Ubuntu.

I will show how to install apache2 inside a container with Ubuntu and how to save this container as a new image.

And finally i will show how to run this new Docker image as a container in the both interactive and background modes.

Cool Tip: Image vs. Container … What is the difference? Read More →

Run Docker Image as a Container

Do Not Confuse: Docker can’t run images themselves. The docker run command takes the Docker image as a template and produces a container from it.

Search Docker Hub for an image to download:

$ docker search ubuntu
NAME                            DESCRIPTION             STARS  OFFICIAL  AUTOMATED
ubuntu                          Ubuntu is a Debian...   6759   [OK]       
dorowu/ubuntu-desktop-lxde-vnc  Ubuntu with openss...   141              [OK]
rastasheep/ubuntu-sshd          Dockerized SSH ser...   114              [OK]
ansible/ubuntu14.04-ansible     Ubuntu 14.04 LTS w...   88               [OK]
ubuntu-upstart                  Upstart is an even...   80     [OK]

Pull the Docker image from a repository with the docker pull command:

$ docker pull ubuntu

Run the Docker image as a container:

$ docker run -it ubuntu /bin/bash
root@e485d06f2182:/#

When you execute docker run IMAGE, the Docker engine takes the IMAGE and creates a container from it by adding a top writable layer and initializing various settings (network ports, container name, ID and resource limits).

Install apache2 web-server inside the container and exit:

root@e485d06f2182:/# apt update
root@e485d06f2182:/# apt install apache2 -y
root@e485d06f2182:/# exit

Create a new image from the stopped container inside which you have installed apache2 and name it apache_snapshot:

$ docker commit e485d06f2182 apache_snapshot

To view a list of all images on your Docker host, run:

$ docker images
REPOSITORY          TAG           IMAGE ID            CREATED             SIZE
apache_snapshot     latest        13037686eac3        22 seconds ago      249MB
ubuntu              latest        00fd29ccc6f1        3 weeks ago         111MB

Cool Tip: How do i list ( running | stopped | all ) Docker containers! Read More →

Now you can run the new Docker image as a container in interactive mode:

$ docker run -it apache_snapshot /bin/bash

Or, for example, you can run the Docker image as a container in background with port :80 inside the Docker container forwarded to the port :8080 on the Docker host:

$ docker run -d -p 8080:80 apache_snapshot /usr/sbin/apache2ctl -D FOREGROUND

In this case, to check that apache2 inside the container is running, just visit http://localhost:8080/ and you will see “Apache2 Ubuntu Default Page”.

Was it useful? Share this post with the world!

Leave a Reply