In this lab you are required to create a custom Docker image of CentOS, and you need to run the Apache web server on it. You can expose port **8080** for Apache. This way when you run your Docker container with the image, to test things out, you will be accessing your web server at port **80** but it will be remapped to port **8080** in the container. In short, you need to write a Dockerfile, populate it with instructions, build an image based on the Dockerfile, and then run the container with that image.
**Note:** Please give the lab an extra minute before connecting via SSH into the instance.
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Install and Start Docker
sudo yum install docker
sudo systemctl start docker sudo systemctl enable docker
- Write a Dockerfile in /home/cloud_user/ Which Will Be Used to Create a Custom Image
vim /home/cloud_user/Dockerfile
FROM scratch ADD centos-7-x86_64-docker.tar.xz / LABEL org.label-schema.schema-version="1.0" org.label-schema.name="CentOS Base Image" org.label-schema.vendor="CentOS" org.label-schema.license="GPLv2" org.label-schema.build-date="20191001" RUN yum -y update RUN yum -y install httpd CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"] EXPOSE 80
ESC :wq ENTER
- Build an Image from the Dockerfile
cd /home/cloud_user/
sudo docker build -t cloud_user/my_webserver:v1 .
- Open Port 8080 with Firewalld and Run a Container from an Image and Test It Out
sudo firewall-cmd --add-port=8080/tcp --permanent sudo firewall-cmd --reload
sudo docker run -d -p 8080:80 --restart=always --name my_webserver cloud_user/my_webserver:v1