Building a Docker Image by using Dockerfile

  1. Comprehensive Blog on Dockers running on OCI
  2. running a Docker Container on OCI
  3. opening OCI Ports for Docker Containers
  4. Building a Docker Image by using Dockerfile
  5. Committing changes made in a Docker without using Dockerfile
  6. Pushing Docker Images to Docker Hub
  7. DevOps with Github, Docker Hub and Oracle Container Cloud Services
Goal

Goal of this session is to create a Dockerfile whose task is to

  • create a debian OS ,
  • update the OS,
  • Install Git,
  • Install Vim
  • create a text file that lists all the directories
Dockerfile Source Code
FROM debian:latest
RUN apt-get update
RUN apt-get install -y git
RUN apt-get install -y vim
RUN ls > listfile.txt
Create Dockerfile copy paste the above source code 
ubuntu@dockervm:~$ ls
ubuntu@dockervm:~$ clear
ubuntu@dockervm:~$ touch Dockerfile
ubuntu@dockervm:~$ vi Dockerfile
ubuntu@dockervm:~$ cat Dockerfile 
FROM debian:latest
RUN apt-get update
RUN apt-get install -y git
RUN ls > listfile.txt
Build the Docker Image with Dockerfile 
Repository Name is jamessmith73/debian
ubuntu@dockervm:~$ docker build -t jamessmith73/debian .
error checking context: 'no permission to read from '/home/ubuntu/.viminfo''.
ubuntu@dockervm:~$ sudo docker build -t jamessmith73/debian .
Sending build context to Docker daemon  17.92kB
Step 1/5 : FROM debian:latest
latest: Pulling from library/debian
bc9ab73e5b14: Already exists 
Digest: sha256:802706fa62e75c96fff96ada0e8ca11f570895ae2e9ba4a9d409981750ca544c
Status: Downloaded newer image for debian:latest
 ---> be2868bebaba
Step 2/5 : RUN apt-get update
 ---> Running in 7b07e8f2ad39
Get:1 http://security-cdn.debian.org/debian-security stretch/updates InRelease [94.3 kB]
Get:3 http://security-cdn.debian.org/debian-security stretch/updates/main amd64 Packages [454 kB]
...
Reading package lists...
Removing intermediate container 7b07e8f2ad39
 ---> ba0af66efb85
Step 3/5 : RUN apt-get install -y git
 ---> Running in 26c763ac9b4a
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
 ..
Suggested packages:
 ..
0 upgraded, 56 newly installed, 0 to remove and 1 not upgraded.
Need to get 22.7 MB of archives.
After this operation, 102 MB of additional disk space will be used.
Get:1 http://security-cdn.debian.org/debian-security stretch/updates/main amd64 libcurl3-gnutls amd64 7.52.1-5+deb9u8 [290 kB]
Get:2 http://security-cdn.debian.org/debian-security stretch/updates/main amd64 git-man all 1:2.11.0-3+deb9u4 [1433 kB]
..
Preparing to unpack .../12-libk5crypto3_1.15-1+deb9u1_amd64.deb ...
....
done.
Removing intermediate container 26c763ac9b4a
 ---> e3257851e022
Step 4/5 : RUN apt-get install -y vim
 ---> Running in f5e1c8fe47b4
..
Fetched 6731 kB in 0s (49.8 MB/s)
.....
Removing intermediate container f5e1c8fe47b4
 ---> 298c3a2ff986
Step 5/5 : RUN ls > listfile.txt
 ---> Running in 74974b05e6dc
Removing intermediate container 74974b05e6dc
 ---> 170489bdc17e
Successfully built 170489bdc17e
Successfully tagged jamessmith73/debian:latest
ubuntu@dockervm:~$ 

Just make a note about the Bold commands , at each Step a Container is created and removed

List and Run the Docker Container that we created now
ubuntu@dockervm:~$ docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
jamessmith73/debian   latest              170489bdc17e        6 minutes ago       249MB
tomcat                latest              ca9e2fccef98        7 days ago          463MB
debian                latest              be2868bebaba        3 weeks ago         101MB
ubuntu@dockervm:~$ docker run jamessmith73/debian:latest cat listfile.txt
bin
boot
dev
etc
home
lib
lib64
listfile.txt
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
Committing the changes to version 1.0
ubuntu@dockervm:~$ docker ps -a
CONTAINER ID        IMAGE                        COMMAND              CREATED             STATUS                      PORTS               NAMES
4ecfe884aecf        jamessmith73/debian:latest   "cat listfile.txt"   24 minutes ago      Exited (0) 24 minutes ago                       confident_yonath
c00aeaaee7ca        jamessmith73/debian:latest   "ls"                 24 minutes ago      Exited (0) 24 minutes ago                       sad_davinci
192bd7f7870f        jamessmith73/debian:latest   "bash"               25 minutes ago      Exited (0) 25 minutes ago                       blissful_goldstine
ubuntu@dockervm:~$ docker commit 4ecfe884aecf jamessmith73/debian:1.0
sha256:90c1c24a6dd6e99fb02a786cba7a7b45d83d18ad8134bda9e59e568b74a07d51
ubuntu@dockervm:~$ docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
jamessmith73/debian   1.0                 90c1c24a6dd6        24 seconds ago      249MB
jamessmith73/debian   latest              170489bdc17e        34 minutes ago      249MB
tomcat                latest              ca9e2fccef98        7 days ago          463MB
debian                latest              be2868bebaba        3 weeks ago         101MB
busybox               latest              59788edf1f3e        4 weeks ago         1.15MB
hello-world           latest              4ab4c602aa5e        8 weeks ago         1.84kB

What Next >> Creating Same Docker Container without using Dockerfile