How to Install, Run Applications inside Docker Containers

In our previous article, we have instructed about Docker installation and configuration on Major Linux distribution such as Debian, Ubuntu, LinuxMint, CentOS, RHEL, Fedora, openSUSE, Arch Linux and also we have played around with Docker Images & Docker Containers. Here, we are going to teach you, how to install application inside the container, how to view the installed application from the container.

1) Install Application on Docker container

First run the docker container and install the application which you want. Here we are going to install apache web server on Ubuntu docker container.

[Run a Docker Container]
# docker run -ti ubuntu /bin/bash

Now, you are in inside the container, just fire the usual command to install apache web server.

[Install Apache Web Server]
root@a19e19ab2e15:/# apt-get install apache2
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  apache2-bin apache2-data libapr1 libaprutil1 libaprutil1-dbd-sqlite3

Type CTRL+P followed by CTRL+Q to exit from interactive shell and note the Container ID

[Note container ID]
# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
a19e19ab2e15        ubuntu              "/bin/bash"         About a minute ago   Up About a minute                       stoic_lichterman

Commit the change and create new image with apache installation. My Container ID a19e19ab2e15 and my new image name 2g/apache2.

[Commit the change]
# docker commit a19e19ab2e15 2g/apache2
sha256:30d347abeadc6816c95de38d11b2c3beb6a49a3a394a549760d1cb396be2deaf

[Check the new image]
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
2g/apache2          latest              30d347abeadc        About a minute ago   202.4 MB
ubuntu              latest              97434d46f197        2 days ago           188 MB
ubuntu              12.04               8e3c25486445        2 days ago           138.4 MB
centos              latest              d0e7f81ca65c        2 weeks ago          196.6 MB
hello-world         latest              690ed74de00f        5 months ago         960 B

2) Running a web application in Docker

First run the docker container and install the application which you want. Here we are going to install apache web server on Ubuntu docker container. When we passed the -P flag to the docker run command Docker mapped any ports exposed in our image to our host. In my case Docker has exposed port 80 (the default apache web server port) on port 8080. We need to run apache in foreground so that it will run until container stop.

[Run a Docker Container]
# docker run -d -p 8080:80 2g/apache2 /usr/sbin/apache2ctl -D FOREGROUND
28c7920b8e85e42fa2f21d21659ec01f96880eabd78d951906fcb71cc8096740

[Apache Running Inside the Container]
# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
28c7920b8e85        2g/apache2          "/usr/sbin/apache2ctl"   3 minutes ago       Up 3 minutes        0.0.0.0:8080->80/tcp   compassionate_ptolemy

[We can lookup what port is externally mapped to actual port inside the container]
# [docker port ID Actual Port]
# docker port 28c7920b8e85 80
0.0.0.0:8080

Now, we can access the inside container apache from host system using localhost:8080. See the screen shot.
install-run-apache-web-server-on-inside-docker-container
Enjoy…)

About Magesh Maruthamuthu

Love to play with all Linux distribution

View all posts by Magesh Maruthamuthu

Leave a Reply

Your email address will not be published. Required fields are marked *