Slide 1
Most trusted JOB oriented professional program
DevOps Certified Professional (DCP)

Take your first step into the world of DevOps with this course, which will help you to learn about the methodologies and tools used to develop, deploy, and operate high-quality software.

Slide 2
DevOps to DevSecOps – Learn the evolution
DevSecOps Certified Professional (DSOCP)

Learn to automate security into a fast-paced DevOps environment using various open-source tools and scripts.

Slide 2
Get certified in the new tech skill to rule the industry
Site Reliability Engineering (SRE) Certified Professional

A method of measuring and achieving reliability through engineering and operations work – developed by Google to manage services.

Slide 2
Master the art of DevOps
Master in DevOps Engineering (MDE)

Get enrolled for the most advanced and only course in the WORLD which can make you an expert and proficient Architect in DevOps, DevSecOps and Site Reliability Engineering (SRE) principles together.

Slide 2
Gain expertise and certified yourself
Azure DevOps Solutions Expert

Learn about the DevOps services available on Azure and how you can use them to make your workflow more efficient.

Slide 3
Learn and get certified
AWS Certified DevOps Professional

Learn about the DevOps services offered by AWS and how you can use them to make your workflow more efficient.

previous arrow
next arrow

Docker Tutorials: Image – Creating Docker Image Step by Step

Setting up the prerequisites

Listing images on the host

$ docker images

If you do not have ubuntu:14.04 images, please download it using following commands.

$ docker pull ubuntu:14.0 

Verify the ubuntu:14.0 image by running the following commands.

$ docker run -t -i -d ubuntu:14.04 /bin/bash

Method 1: You can update a container created from an image and commit the results to an image.

We will use training/sinatra image pretty useful for creating the images for Method1.

To update an image you first need to create a container from the image you’d like to update.

$ docker run -t -i training/sinatra /bin/bash

Inside our running container first let’s update apt, httpd and install git.

$ root@0b2616b0e5a8:/# apt-get update
$ root@0b2616b0e5a8:/# apt-get install -y git
$ root@0b2616b0e5a8:/# apt-get install -y httpd

Once this has completed let’s exit our container using the exit command. Now you have a container with the change you want to make. You can then commit a copy of this container to an image using the docker commit command.

$ docker commit -m "Added json gem" -a "Rajesh Kumar" 0b2616b0e5a8 scmgalaxy/sinatra:v2

Here you’ve used the docker commit command. You’ve specified two flags: -m and -a. The -m flag allows us to specify a commit message, much like you would with a commit on a version control system. The -a flag allows us to specify an author for our update.

You’ve also specified the container you want to create this new image from, 0b2616b0e5a8 (the ID you recorded earlier) and you’ve specified a target for the image:scmgalaxy/sinatra:v2

It consists of a new user, scmgalaxy, that you’re writing this image to. You’ve also specified the name of the image sinatra. Finally you’re specifying a tag for the image: v2.

You can then look at our new scmgalaxy/sinatra image using the docker images command.

$ docker images

To use our new image to create a container you can then:

$ docker run -t -i ouruser/sinatra:v2 /bin/bash

Method 2: You can use a Dockerfile to specify instructions to create an image.

Using the docker commit command is a pretty simple way of extending an image but it’s a bit cumbersome and it’s not easy to share a development process for images amongst a team. Instead you can use a new command, docker build, to build new images from scratch.

To do this you create a Dockerfile that contains a set of instructions that tell Docker how to build our image.

First, create a directory and a Dockerfile.


$ mkdir sinatra
$ cd sinatra
$ touch Dockerfile

Each instruction creates a new layer of the image. Try a simple example now for building your own Sinatra image for your fictitious development team.


FROM ubuntu:14.04
MAINTAINER Rajesh Kumar "rajesh@scmgalaxy.com"
RUN apt-get update && apt-get install -y git httpd

Examine what your Dockerfile does. Each instruction prefixes a statement and is capitalized.

INSTRUCTION statement

The first instruction FROM tells Docker what the source of our image is, in this case you’re basing our new image on an Ubuntu 14.04 image. The instruction uses the MAINTAINER instruction to specify who maintains the new image.

Lastly, you’ve specified two RUN git and httpd

Now let’s take our Dockerfile and use the docker build command to build an image.

$ docker build -t scmgalaxy/sinatra:v3 ./ 

You’ve specified our docker build command and used the -t flag to identify our new image as belonging to the user scmgalaxy, the repository name sinatra and given it the tag v2.

$ docker run -t -i scmgalaxy/sinatra:v2 /bin/bash/ 

Setting tags on an image

$ docker tag 5db5f8471261 scmgalaxy/sinatra:dev

The docker tag command takes the ID of the image, here 5db5f8471261, and our user name, the repository name and the new tag.

$ docker images scmgalaxy/sinatra

Remove an image from the host

$ docker rmi training/sinatra
Rajesh Kumar