After you have installed docker on your linux machine, the next step is to create an image and run a container. You need to create a base image of an OS distribution and after that you can add and modify the base image by installing packages and dependencies and committing the changes to it.
In this article, we will show you how to create an ubuntu base image and on top of that create intermediate image layers by adding packages in it and keep committing the changes. We will update the ubuntu base image, install 3 packages - vim editor, firefox and python 3.
Note that we can do this using two ways - either we mention all the commands inside a dockerfile and build the image all at once or we can do it step by step and keep committing the changes through CLI. We will discuss both the methods here.
Method 1. Step by Step using CLI.
Open a terminal and run the following command. Note that if you are not the root user, you need to add sudo before all the commands.
sudo docker run ubuntu bash -c “apt -y update”
This will check if an ubuntu image exists locally or not. If it does not exist, it will display “Unable to find image 'ubuntu:latest' locally” message and start pulling it from docker hub. After pulling the image, it will run the apt update command.
We will now install a vim editor inside the container. For that, we will run the bash of the ubuntu image.
sudo docker run -it ubuntu bash
This will open an interactive ubuntu bash. Inside the bash, type the following commands one by one to install the packages.
apt-get -y update apt-get -y install vim apt-get -y install firefox apt-get install software-properties-common add-apt-repository ppa:deadsnakes/ppa apt install python3.7 exit
The first command runs an update. It then installs vim editor, firefox and some dependencies for python 3. Then it adds the official python 3 repository and installs python 3.7 and then exits the bash.
You can check the version of python using the following command.
After exiting the bash, you need to commit the changes. Find out the container ID using the following command.
sudo docker ps -l
Copy the container ID and paste in the following command.
sudo docker commit <CONTAINER_ID> <NEW IMAGE NAME>
You can check that the new ubuntu image with the specified name and installed packages has been created using the following command.
sudo docker images
Create a file name dockerfile and place the following commands in it.
#Create ubuntu as base image FROM ubuntu #Install packages RUN apt-get -y update RUN apt-get -y install vim RUN apt-get -y install firefox RUN apt-get -y install software-properties-common RUN add-apt-repository ppa:deadsnakes/ppa RUN apt-get -y install python3.7
Build the image using the following command.
sudo docker build -t username/imagename . (don’t forget the dot)
This command builds the docker image using the dockerfile.
Run the docker image using the following command.
sudo docker run -t username/imagename:tagname
To conclude, the better method to create an image and install packages is by creating a dockerfile with the appropriate commands because it will help you to keep track of the changes that you make and the packages that you install and gives a better clarity of the whole project.