As
we already discussed that docker containers are mainly used as a application
package containers. These are designed to package and run a single service. In
this article we will see how we can run a single HTTP server inside a docker
container
The
outline for the steps to follow is
1)
Download a latest Copy of the Ubuntu image
2)
install and Configure apache2 on them
3)
Commit the Image
4)
Start the Apache server on foreground with a Port to access
5)
Access the apache server.
1)
Download the latest ubuntu using the “docker run” command
[root@vx111a
work]# docker run ubuntu /bin/echo Hello World
Unable
to find image 'ubuntu:latest' locally
Trying
to pull repository docker.io/library/ubuntu ... latest: Pulling from
library/ubuntu
9377ad319b00:
Pull complete
a82f81f25750:
Pull complete
b207c06aba70:
Pull complete
d55e68e6cc9c:
Pull complete
Digest:
sha256:a2b67b6107aa640044c25a03b9e06e2a2d48c95be6ac17fb1a387e75eebafd7c
Status:
Downloaded newer image for docker.io/ubuntu:latest
Hello
World
The
above command not only downloads the ubuntu latest image and it also make sure
to run the echo command once the image is downloaded successfully.
Once
the Image is downloaded, start the image using,
docker
run -t -i docker.io/ubuntu /bin/bash
keep
running and in other console run the below commands
This
will start the Container and take you to the bash prompt in the container.
2)
Run the installation of apache commands as
Apt-get
update
Apt-get
install apache2
This
will download the packages and it will ask if we want to raise the container
size. Enter yes and it will take some time to download the packages.
Install
the w3m packages to as this is needed for the apache to run successfully. Make
sure the apache2ctl command Is available at /usr/sbin/apache2ctl.
3)
The next step is commit the image so that we can use that multiple times. Now
make sure the above ubuntu container is running by checking the “docker ps”
command.
Once
we got the ubuntu container running, take the container ID and commit the image
as
[root@vx111a work]# docker commit 9b708c78e088
apache2/test
373fad1720920fabc84a6dba5b80854e19acb734a786c35bd996a5a85e3bba6d
373fad1720920fabc84a6dba5b80854e19acb734a786c35bd996a5a85e3bba6d
Now
we have committed the ubuntu image which has apache2 installed as apache/test.
We
can check this using the “docker images” command
4)
Start the Container with apache on a Port
We
need to run the apache process in the foreground, since our container will stop
when the process specified in the docker run command stops. We can do this with
a flag -D when starting the apache2 process. The default apache install
will be running on port 80. To give our container access to traffic over port 80,
we use the -p flag and specify the port on the host that maps to the port
inside the container. In our case we want 80 for each, so we include -p 8888:8888
in our command as
[root@vx111a
work]# docker run -d -p 8888:8888 apache2/test /usr/sbin/apache2ctl -d
FOREGROUND
936170541e076c192c6effd4a410e6ad5387637bbea5eda91fdeea4333b435fc
936170541e076c192c6effd4a410e6ad5387637bbea5eda91fdeea4333b435fc
5)
Test the apache by entering the http://localhost:8888
in the host browser. We can see the apache Home page.
This
is how we can run apache Httpd Server in a Docker Container. More to Come
,happy learning J
No comments :
Post a Comment