Dockerfle is a very important concept to create you own container image. However there are lots of images available on docker hub but these are standard images and creators of these images are not aware about our requirement and environment. In this situation we need our own images. There are two way to create your own container images.
[root@server109 docker-ws]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest b2c2ab6dcf2e 2 weeks ago 166MB
mysql 5.7 413be204e9c3 5 weeks ago 456MB
ubuntu 14.04 6e4f1fe62ff1 4 months ago 197MB
centos 7 5e35e350aded 5 months ago 203MB
wordpress 5.1.1-php7.3-apache a69f6702fdda 12 months ago 422MB
So let's start to create our own image-
Step 1:- Pull a standard image from docker hub
[root@server109 docker-ws]# docker pull centos
Step 2:- Prepare Dockerfile, Dockerfile is not name of any technology. It is just name of a text file in which we put our requirement and pass this file as input in docker image build / docker build command.
[root@server109 docker-ws]# mkdir /root/docker-ws
[root@server109 docker-ws]# cd /root/docker-ws/
[root@server109 docker-ws]# pwd
/root/docker-ws
[root@server109 docker-ws]# cat > Dockerfile
FROM centos
RUN yum install net-tools httpd python36 -y
CMD python3
Step 3:- Create/Build the image
[root@server109 docker-ws]# docker image ls |grep customized_centos
[root@server109 docker-ws]# docker image build -t customized_centos:v1 /root/docker-ws/
Sending build context to Docker daemon 2.048kB
Step 1/3 : FROM centos
latest: Pulling from library/centos
8a29a15cefae: Pull complete
Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700
Status: Downloaded newer image for centos:latest
---> 470671670cac
Step 2/3 : RUN yum install net-tools httpd python36 -y
---> Running in 48bf98d90276
CentOS-8 - AppStream 2.8 MB/s | 7.0 MB 00:02
CentOS-8 - Base 1.9 MB/s | 2.2 MB 00:01
CentOS-8 - Extras 11 kB/s | 5.9 kB 00:00
Dependencies resolved.
====================================================================
Package Arch Version Repo Size
====================================================================
Installing:
httpd x86_64 2.4.37-16.module_el8.1.0+256+ae790463 AppStream 1.7 M
python36 x86_64 3.6.8-2.module_el8.1.0+245+c39af44f AppStream 19 k
net-tools x86_64 2.0-0.51.20160912git.el8 BaseOS 323 k
Installing dependencies:
apr x86_64 1.6.3-9.el8 AppStream 125 k
apr-util x86_64 1.6.1-6.el8 AppStream 105 k
centos-logos-httpd
noarch 80.5-2.el8 AppStream 24 k
httpd-filesystem noarch 2.4.37-16.module_el8.1.0+256+ae790463 AppStream 35 k
httpd-tools x86_64 2.4.37-16.module_el8.1.0+256+ae790463 AppStream 103 k
mod_http2 x86_64 1.11.3-3.module_el8.1.0+213+acce2796 AppStream 158 k
python3-pip noarch 9.0.3-15.el8 AppStream 19 k
brotli x86_64 1.0.6-1.el8 BaseOS 323 k
mailcap noarch 2.1.48-3.el8 BaseOS 39 k
python3-setuptools
noarch 39.2.0-5.el8 BaseOS 162 k
Installing weak dependencies:
apr-util-bdb x86_64 1.6.1-6.el8 AppStream 25 k
apr-util-openssl x86_64 1.6.1-6.el8 AppStream 27 k
Enabling module streams:
httpd 2.4
python36 3.6
Transaction Summary
=====================================================================
Install 15 Packages
Total download size: 3.1 M
Installed size: 9.6 M
Downloading Packages:
(1/15): apr-util-bdb-1.6.1-6.el8.x86_64.rpm 276 kB/s | 25 kB 00:00
(2/15): apr-util-1.6.1-6.el8.x86_64.rpm 1.1 MB/s | 105 kB 00:00
(3/15): apr-1.6.3-9.el8.x86_64.rpm 1.1 MB/s | 125 kB 00:00
(4/15): centos-logos-httpd-80.5-2.el8.noarch.rp 603 kB/s | 24 kB 00:00
(5/15): apr-util-openssl-1.6.1-6.el8.x86_64.rpm 477 kB/s | 27 kB 00:00
(6/15): httpd-2.4.37-16.module_el8.1.0+256+ae79 3.7 MB/s | 1.7 MB 00:00
(7/15): mod_http2-1.11.3-3.module_el8.1.0+213+a 711 kB/s | 158 kB 00:00
(8/15): python3-pip-9.0.3-15.el8.noarch.rpm 954 kB/s | 19 kB 00:00
(9/15): python36-3.6.8-2.module_el8.1.0+245+c39 258 kB/s | 19 kB 00:00
(10/15): httpd-filesystem-2.4.37-16.module_el8. 32 kB/s | 35 kB 00:01
(11/15): mailcap-2.1.48-3.el8.noarch.rpm 333 kB/s | 39 kB 00:00
(12/15): brotli-1.0.6-1.el8.x86_64.rpm 647 kB/s | 323 kB 00:00
(13/15): python3-setuptools-39.2.0-5.el8.noarch 1.2 MB/s | 162 kB 00:00
(14/15): net-tools-2.0-0.51.20160912git.el8.x86 1.3 MB/s | 323 kB 00:00
(15/15): httpd-tools-2.4.37-16.module_el8.1.0+2 32 kB/s | 103 kB 00:03
--------------------------------------------------------------------------------
Total 769 kB/s | 3.1 MB 00:04
warning: /var/cache/dnf/AppStream-02e86d1c976ab532/packages/apr-1.6.3-9.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS-8 - AppStream 32 kB/s | 1.6 kB 00:00
Importing GPG key 0x8483C65D:
Userid : "CentOS (CentOS Official Signing Key) <security@centos.org>"
Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : apr-1.6.3-9.el8.x86_64 1/15
Running scriptlet: apr-1.6.3-9.el8.x86_64 1/15
Installing : apr-util-bdb-1.6.1-6.el8.x86_64 2/15
Installing : apr-util-openssl-1.6.1-6.el8.x86_64 3/15
Installing : apr-util-1.6.1-6.el8.x86_64 4/15
Running scriptlet: apr-util-1.6.1-6.el8.x86_64 4/15
Installing : httpd-tools-2.4.37-16.module_el8.1.0+256+ae790463. 5/15
Installing : python3-setuptools-39.2.0-5.el8.noarch 6/15
Installing : python36-3.6.8-2.module_el8.1.0+245+c39af44f.x86_6 7/15
Running scriptlet: python36-3.6.8-2.module_el8.1.0+245+c39af44f.x86_6 7/15
Installing : python3-pip-9.0.3-15.el8.noarch 8/15
Installing : mailcap-2.1.48-3.el8.noarch 9/15
Installing : brotli-1.0.6-1.el8.x86_64 10/15
Running scriptlet: httpd-filesystem-2.4.37-16.module_el8.1.0+256+ae79 11/15
Installing : httpd-filesystem-2.4.37-16.module_el8.1.0+256+ae79 11/15
Installing : centos-logos-httpd-80.5-2.el8.noarch 12/15
Installing : mod_http2-1.11.3-3.module_el8.1.0+213+acce2796.x86 13/15
Installing : httpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64 14/15
Running scriptlet: httpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64 14/15
Installing : net-tools-2.0-0.51.20160912git.el8.x86_64 15/15
Running scriptlet: net-tools-2.0-0.51.20160912git.el8.x86_64 15/15
Running scriptlet: httpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64 15/15
Running scriptlet: net-tools-2.0-0.51.20160912git.el8.x86_64 15/15
Verifying : apr-1.6.3-9.el8.x86_64 1/15
Verifying : apr-util-1.6.1-6.el8.x86_64 2/15
Verifying : apr-util-bdb-1.6.1-6.el8.x86_64 3/15
Verifying : apr-util-openssl-1.6.1-6.el8.x86_64 4/15
Verifying : centos-logos-httpd-80.5-2.el8.noarch 5/15
Verifying : httpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64 6/15
Verifying : httpd-filesystem-2.4.37-16.module_el8.1.0+256+ae79 7/15
Verifying : httpd-tools-2.4.37-16.module_el8.1.0+256+ae790463. 8/15
Verifying : mod_http2-1.11.3-3.module_el8.1.0+213+acce2796.x86 9/15
Verifying : python3-pip-9.0.3-15.el8.noarch 10/15
Verifying : python36-3.6.8-2.module_el8.1.0+245+c39af44f.x86_6 11/15
Verifying : brotli-1.0.6-1.el8.x86_64 12/15
Verifying : mailcap-2.1.48-3.el8.noarch 13/15
Verifying : net-tools-2.0-0.51.20160912git.el8.x86_64 14/15
Verifying : python3-setuptools-39.2.0-5.el8.noarch 15/15
Installed:
httpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64
python36-3.6.8-2.module_el8.1.0+245+c39af44f.x86_64
net-tools-2.0-0.51.20160912git.el8.x86_64
apr-util-bdb-1.6.1-6.el8.x86_64
apr-util-openssl-1.6.1-6.el8.x86_64
apr-1.6.3-9.el8.x86_64
apr-util-1.6.1-6.el8.x86_64
centos-logos-httpd-80.5-2.el8.noarch
httpd-filesystem-2.4.37-16.module_el8.1.0+256+ae790463.noarch
httpd-tools-2.4.37-16.module_el8.1.0+256+ae790463.x86_64
mod_http2-1.11.3-3.module_el8.1.0+213+acce2796.x86_64
python3-pip-9.0.3-15.el8.noarch
brotli-1.0.6-1.el8.x86_64
mailcap-2.1.48-3.el8.noarch
python3-setuptools-39.2.0-5.el8.noarch
Complete!
Removing intermediate container 48bf98d90276
---> 36ebc72e35c8
Step 3/3 : CMD python3
---> Running in e6e00e8d2edb
Removing intermediate container e6e00e8d2edb
---> d474dc1f3564
Successfully built d474dc1f3564
Successfully tagged customized_centos:v1
[root@server109 docker-ws]# docker image ls |grep customized_centos
customized_centos v1 d474dc1f3564 2 minutes ago 281MB
That's all, have a look on last command output. Your own image has been created. You can start using it. I added very few requirements in Dockerfile to make it easy to understand but you can put as per your requirement.
- docker commit - We can create our own images using 'docker commit' command but only limited feature available in this approach. In below command centos is my existing container name and webserver:v1 is my new image name and version.
[root@server109 docker-ws]# docker pull centos
[root@server109 docker-ws]# docker container commit centos webserver:v1
- docker build - A powerful approach to create a container image, We can customize our image as more as customization required. This approach is also known as Dockerfile approach.
[root@server109 docker-ws]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest b2c2ab6dcf2e 2 weeks ago 166MB
mysql 5.7 413be204e9c3 5 weeks ago 456MB
ubuntu 14.04 6e4f1fe62ff1 4 months ago 197MB
centos 7 5e35e350aded 5 months ago 203MB
wordpress 5.1.1-php7.3-apache a69f6702fdda 12 months ago 422MB
So let's start to create our own image-
Step 1:- Pull a standard image from docker hub
[root@server109 docker-ws]# docker pull centos
Step 2:- Prepare Dockerfile, Dockerfile is not name of any technology. It is just name of a text file in which we put our requirement and pass this file as input in docker image build / docker build command.
[root@server109 docker-ws]# mkdir /root/docker-ws
[root@server109 docker-ws]# cd /root/docker-ws/
[root@server109 docker-ws]# pwd
/root/docker-ws
[root@server109 docker-ws]# cat > Dockerfile
FROM centos
RUN yum install net-tools httpd python36 -y
CMD python3
Step 3:- Create/Build the image
[root@server109 docker-ws]# docker image ls |grep customized_centos
[root@server109 docker-ws]# docker image build -t customized_centos:v1 /root/docker-ws/
Sending build context to Docker daemon 2.048kB
Step 1/3 : FROM centos
latest: Pulling from library/centos
8a29a15cefae: Pull complete
Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700
Status: Downloaded newer image for centos:latest
---> 470671670cac
Step 2/3 : RUN yum install net-tools httpd python36 -y
---> Running in 48bf98d90276
CentOS-8 - AppStream 2.8 MB/s | 7.0 MB 00:02
CentOS-8 - Base 1.9 MB/s | 2.2 MB 00:01
CentOS-8 - Extras 11 kB/s | 5.9 kB 00:00
Dependencies resolved.
====================================================================
Package Arch Version Repo Size
====================================================================
Installing:
httpd x86_64 2.4.37-16.module_el8.1.0+256+ae790463 AppStream 1.7 M
python36 x86_64 3.6.8-2.module_el8.1.0+245+c39af44f AppStream 19 k
net-tools x86_64 2.0-0.51.20160912git.el8 BaseOS 323 k
Installing dependencies:
apr x86_64 1.6.3-9.el8 AppStream 125 k
apr-util x86_64 1.6.1-6.el8 AppStream 105 k
centos-logos-httpd
noarch 80.5-2.el8 AppStream 24 k
httpd-filesystem noarch 2.4.37-16.module_el8.1.0+256+ae790463 AppStream 35 k
httpd-tools x86_64 2.4.37-16.module_el8.1.0+256+ae790463 AppStream 103 k
mod_http2 x86_64 1.11.3-3.module_el8.1.0+213+acce2796 AppStream 158 k
python3-pip noarch 9.0.3-15.el8 AppStream 19 k
brotli x86_64 1.0.6-1.el8 BaseOS 323 k
mailcap noarch 2.1.48-3.el8 BaseOS 39 k
python3-setuptools
noarch 39.2.0-5.el8 BaseOS 162 k
Installing weak dependencies:
apr-util-bdb x86_64 1.6.1-6.el8 AppStream 25 k
apr-util-openssl x86_64 1.6.1-6.el8 AppStream 27 k
Enabling module streams:
httpd 2.4
python36 3.6
Transaction Summary
=====================================================================
Install 15 Packages
Total download size: 3.1 M
Installed size: 9.6 M
Downloading Packages:
(1/15): apr-util-bdb-1.6.1-6.el8.x86_64.rpm 276 kB/s | 25 kB 00:00
(2/15): apr-util-1.6.1-6.el8.x86_64.rpm 1.1 MB/s | 105 kB 00:00
(3/15): apr-1.6.3-9.el8.x86_64.rpm 1.1 MB/s | 125 kB 00:00
(4/15): centos-logos-httpd-80.5-2.el8.noarch.rp 603 kB/s | 24 kB 00:00
(5/15): apr-util-openssl-1.6.1-6.el8.x86_64.rpm 477 kB/s | 27 kB 00:00
(6/15): httpd-2.4.37-16.module_el8.1.0+256+ae79 3.7 MB/s | 1.7 MB 00:00
(7/15): mod_http2-1.11.3-3.module_el8.1.0+213+a 711 kB/s | 158 kB 00:00
(8/15): python3-pip-9.0.3-15.el8.noarch.rpm 954 kB/s | 19 kB 00:00
(9/15): python36-3.6.8-2.module_el8.1.0+245+c39 258 kB/s | 19 kB 00:00
(10/15): httpd-filesystem-2.4.37-16.module_el8. 32 kB/s | 35 kB 00:01
(11/15): mailcap-2.1.48-3.el8.noarch.rpm 333 kB/s | 39 kB 00:00
(12/15): brotli-1.0.6-1.el8.x86_64.rpm 647 kB/s | 323 kB 00:00
(13/15): python3-setuptools-39.2.0-5.el8.noarch 1.2 MB/s | 162 kB 00:00
(14/15): net-tools-2.0-0.51.20160912git.el8.x86 1.3 MB/s | 323 kB 00:00
(15/15): httpd-tools-2.4.37-16.module_el8.1.0+2 32 kB/s | 103 kB 00:03
--------------------------------------------------------------------------------
Total 769 kB/s | 3.1 MB 00:04
warning: /var/cache/dnf/AppStream-02e86d1c976ab532/packages/apr-1.6.3-9.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS-8 - AppStream 32 kB/s | 1.6 kB 00:00
Importing GPG key 0x8483C65D:
Userid : "CentOS (CentOS Official Signing Key) <security@centos.org>"
Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : apr-1.6.3-9.el8.x86_64 1/15
Running scriptlet: apr-1.6.3-9.el8.x86_64 1/15
Installing : apr-util-bdb-1.6.1-6.el8.x86_64 2/15
Installing : apr-util-openssl-1.6.1-6.el8.x86_64 3/15
Installing : apr-util-1.6.1-6.el8.x86_64 4/15
Running scriptlet: apr-util-1.6.1-6.el8.x86_64 4/15
Installing : httpd-tools-2.4.37-16.module_el8.1.0+256+ae790463. 5/15
Installing : python3-setuptools-39.2.0-5.el8.noarch 6/15
Installing : python36-3.6.8-2.module_el8.1.0+245+c39af44f.x86_6 7/15
Running scriptlet: python36-3.6.8-2.module_el8.1.0+245+c39af44f.x86_6 7/15
Installing : python3-pip-9.0.3-15.el8.noarch 8/15
Installing : mailcap-2.1.48-3.el8.noarch 9/15
Installing : brotli-1.0.6-1.el8.x86_64 10/15
Running scriptlet: httpd-filesystem-2.4.37-16.module_el8.1.0+256+ae79 11/15
Installing : httpd-filesystem-2.4.37-16.module_el8.1.0+256+ae79 11/15
Installing : centos-logos-httpd-80.5-2.el8.noarch 12/15
Installing : mod_http2-1.11.3-3.module_el8.1.0+213+acce2796.x86 13/15
Installing : httpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64 14/15
Running scriptlet: httpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64 14/15
Installing : net-tools-2.0-0.51.20160912git.el8.x86_64 15/15
Running scriptlet: net-tools-2.0-0.51.20160912git.el8.x86_64 15/15
Running scriptlet: httpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64 15/15
Running scriptlet: net-tools-2.0-0.51.20160912git.el8.x86_64 15/15
Verifying : apr-1.6.3-9.el8.x86_64 1/15
Verifying : apr-util-1.6.1-6.el8.x86_64 2/15
Verifying : apr-util-bdb-1.6.1-6.el8.x86_64 3/15
Verifying : apr-util-openssl-1.6.1-6.el8.x86_64 4/15
Verifying : centos-logos-httpd-80.5-2.el8.noarch 5/15
Verifying : httpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64 6/15
Verifying : httpd-filesystem-2.4.37-16.module_el8.1.0+256+ae79 7/15
Verifying : httpd-tools-2.4.37-16.module_el8.1.0+256+ae790463. 8/15
Verifying : mod_http2-1.11.3-3.module_el8.1.0+213+acce2796.x86 9/15
Verifying : python3-pip-9.0.3-15.el8.noarch 10/15
Verifying : python36-3.6.8-2.module_el8.1.0+245+c39af44f.x86_6 11/15
Verifying : brotli-1.0.6-1.el8.x86_64 12/15
Verifying : mailcap-2.1.48-3.el8.noarch 13/15
Verifying : net-tools-2.0-0.51.20160912git.el8.x86_64 14/15
Verifying : python3-setuptools-39.2.0-5.el8.noarch 15/15
Installed:
httpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64
python36-3.6.8-2.module_el8.1.0+245+c39af44f.x86_64
net-tools-2.0-0.51.20160912git.el8.x86_64
apr-util-bdb-1.6.1-6.el8.x86_64
apr-util-openssl-1.6.1-6.el8.x86_64
apr-1.6.3-9.el8.x86_64
apr-util-1.6.1-6.el8.x86_64
centos-logos-httpd-80.5-2.el8.noarch
httpd-filesystem-2.4.37-16.module_el8.1.0+256+ae790463.noarch
httpd-tools-2.4.37-16.module_el8.1.0+256+ae790463.x86_64
mod_http2-1.11.3-3.module_el8.1.0+213+acce2796.x86_64
python3-pip-9.0.3-15.el8.noarch
brotli-1.0.6-1.el8.x86_64
mailcap-2.1.48-3.el8.noarch
python3-setuptools-39.2.0-5.el8.noarch
Complete!
Removing intermediate container 48bf98d90276
---> 36ebc72e35c8
Step 3/3 : CMD python3
---> Running in e6e00e8d2edb
Removing intermediate container e6e00e8d2edb
---> d474dc1f3564
Successfully built d474dc1f3564
Successfully tagged customized_centos:v1
[root@server109 docker-ws]# docker image ls |grep customized_centos
customized_centos v1 d474dc1f3564 2 minutes ago 281MB
Comments
Post a Comment
Please share your experience.....