Learning Objectives:
Learn to create a Docker image of a simple web application.
Learn to host a Docker container on EC2 instance.
Learn to register a Docker image to Amazon Elastic Container Registry.
Step 1: In AWS management console, go to Amazon EC2 service and Launch an Instance. To perform the following procedure, refer this blog from step no.1 to 7. If you have existing key pair and Security group, you can skip step no.5 & 7.
Name: my-EC2-docker
Operating System: Amazon Linux
Amazon Machine Image (AMI): Amazon Linux 2023 AMI
Instance type: t2.micro
Key Pair: Choose the existing Key Pair, if there is no existing key pair then create a new key pair.
Security group name: WebServer-SG
Description: Security group for Web servers
Inbound Security Group Rules: Keep SSH rule default and click on add security group rule.
Type: HTTP
Port Range: 80
Source: 0.0.0.0/0
Keep the rest as default and click on Launch Instance.
Check your Instance is in running state.
Step 2: Select your EC2 instance and connect to your Linux Instance using SSH.
Now execute the following commands one-by-one given below.
sudo yum update -y
sudo dnf update
sudo dnf install docker
sudo service docker start
sudo systemctl enable docker
sudo usermod -a -G docker ec2-user
Now log out and log back in again to pick up the new docker group permissions.
Execute the following command.
docker info
Now we will create a docker image.
1. To create a docker image, execute the following command given below.
touch Dockerfile
2. Execute the following command to edit the Dockerfile you just created and add the following content. To open nano editor to edit Dockerfile run the following command.
nano Dockerfile
Copy the following script and past into file using CTRL+SHIFT+V
FROM ubuntu:18.04
# Install dependencies
RUN apt-get update && \
apt-get -y install apache2
# Install apache and write hello world message
RUN echo 'Hello from Cloud-PlusPlus World!' > /var/www/html/index.html
# Configure apache
RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \
echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \
echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \
echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \
chmod 755 /root/run_apache.sh
EXPOSE 80
CMD /root/run_apache.sh
To save the file use Ctrl+X then choose Y and Enter.
3. Build the Docker image from your Dockerfile.
docker build -t hello-world .
4. Run docker images to verify that the image was created correctly.
docker images --filter reference=hello-world
5. Run the newly built image
docker run -t -i -p 80:80 hello-world
6. Open a browser and point to the server that is running Docker and hosting your container.
To open the browser, go to your EC2 Instance and copy the public DNS value and run it in a new tab.
You can see the output as “Hello from Cloud-PlusPlus World!”
7. Stop the Docker container by typing Ctrl + c
Step 3: Push your image to Amazon Elastic Container Registry.
Execute the following to configure aws commands.
Note: Here, give your access key id and secret access key from you admin credentials, and specify your region.
aws configure
Access Key Id: AKIAVHXZDFGDGGGHHHW
Secret access key: /n1Zxus+wKCdg56gdgg65dg5g5d6
Region: us-east-1
File type: json
1. Create an Amazon ECR repository to store your hello-world image. Note the repositoryUri in the output.
Replace region, with your AWS Region, for example, us-east-1.
aws ecr create-repository --repository-name hello-repository --region region
2. Replace the aws_account_id and specify your region name in the command highlighted in red.
docker tag hello-world aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository
3. Run the aws ecr get-login-password command.
4. Replace the aws_account_id and specify your region name in the command highlighted in red.
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
You will get the output as Login Succeeded.
5. Push the image to Amazon ECR with the repositoryUri value from the earlier step.
6. Replace the aws_account_id and specify your region name in the command highlighted in red.
docker push aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository
You can go to Amazon ECR service and check your repository is created.
Open repository to see the image we push.
Note: Delete the repository from Amazon ECR and terminate the EC2 instance if no longer needed.
Was this document helpful? How can we make this document better. Please provide your insights. You can download PDF version for reference.
For your aws certification needs or for aws learning contact us.
Easy to understand
Easy to understand sir
Useful blog sir.
well defined
Good blog