Table of Contents
Introduction
In this tutorial, We will deploy a container Nginx server, modify it, and then create a new image from that running container. Now, let’s go to Create Docker Image from a Running Container.
What does docker mean?
Docker is a set of platform as a service products that use OS-level virtualization to deliver software in packages called containers. Containers are isolated from one another and bundle their own software, libraries, and configuration files Quota from Wikipedia
Install Docker on Ubuntu
If you don’t already have Docker installed, let’s do so. I will install Docker on Ubuntu
Server. I use Ubuntu version 21.04 to install Docker.
To install Docker on Your Ubuntu server command below
sudo apt-get install docker.io -y
Add your user to the docker group with the command below
sudo usermod -aG docker $USER
Logging out and logging back in to ensure the changes take effect.
Create Docker Image from a Running Container
Create the New Container
We will create the new container with the command below:
sudo docker create --name nginx-devops -p 80:80 nginx:alpine
- Create a new container:
nginx-devops
- Internal port ( Guest ): 80
- External ( host ) port: 80
- Use image:
nginx:alpine
The output terminal is the picture below:
Start the Nginx container with the command below
After creating a new container, you open a Web browser and point it. You see the NGINX welcome page.
Modify the Existing Container
We will create a new index.html page for Nginx.
To do this, create a new page with the command below
vi index.html
In that file, paste the content (you can modify it to say whatever you want):
<html>
<h2>DevopsRoles.com</h2>
</html>
Save and close the file
We copy index.html to the document root on nginx-devops
container with the command below:
sudo docker cp index.html nginx-devops:/usr/share/nginx/html/index.html
you refresh the page in your web browser, you see a new welcome as the picture below:
Create a New Image
How to create a new image that includes the changes. It is very simple.
- We will commit the changes with the command below:
sudo docker commit nginx-devops
we will list all current images with the command below
sudo docker images
2. We will tag for docker-base-image
sudo docker tag IMAGE_ID nginx-devops-container
Where IMAGE_ID is the actual ID of your new container.
you’ll see something like this:
sudo docker images
In the output terminal step, 1 and step 2 as in the picture below
You’ve created a new Docker image from a running container.
Let’s stop and remove the original container. we will remove nginx-devops
container with the command below
sudo docker ps -a
sudo docker stop ID
sudo docker rm ID
Where ID is the first four digits of the original container.
You could deploy a container from the new image with a command like:
sudo docker create --name nginx-new -p 80:80 nginx-devops-container:latest
The output terminal as the command below
vagrant@devopsroles:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fe3d2e383b80 nginx:alpine "/docker-entrypoint.…" 11 minutes ago Up 8 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp nginx-devops
vagrant@devopsroles:~$ sudo docker stop fe3d2e383b80
fe3d2e383b80
vagrant@devopsroles:~$ sudo docker rm fe3d2e383b80
fe3d2e383b80
vagrant@devopsroles:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
vagrant@devopsroles:~$ sudo docker create --name nginx-new -p 80:80 nginx-devops-container:latest
91175e61375cf86fc935c55081be6f81354923564c9c0c0f4e5055ef0f590600
vagrant@devopsroles:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
91175e61375c nginx-devops-container:latest "/docker-entrypoint.…" About a minute ago Created nginx-new
vagrant@devopsroles:~$ sudo docker start 91175e61375c
91175e61375c
vagrant@devopsroles:~$
What is the difference between docker commit
and docker build
?
docker commit
creates an image from a container’s state, while docker build
creating an image from a Dockerfile, allowing for a more controlled and reproducible build process.
Refresh your web browser and you should, once again, see the DevopsRoles page, New Stack! Welcome page.
YouTube: Create Docker Image from a Running Container
Conclusion
Create Docker Image from a Running Container is a powerful feature that enables you to capture the exact state of an application at any given moment. By following the steps outlined in this guide, you can easily commit a running container to a new image and use advanced techniques to add tags, commit messages, and author information. Whether you’re looking to back up your application, replicate environments, or share your work with others, this process provides a simple and effective solution. I hope will this your helpful. Thank you for reading the DevopsRoles page!