by Anish
Posted on Monday September 30th 2019
FROM scratch : The scratch image is mostly used for building base images, this image is the most minimal image in Docker doesn't contain any folders/files.
Here is the example of creating sample base images for your environment.
The Dockerfile of creating Centos7 base Image. The centos-7.2.1511-docker.tar.xz contains all the files system files for Centos7.
FROM scratch
LABEL org.label-schema.schema-version="1.0" \
org.label-schema.name="CentOS Base Image" \
maintainer="https://0cloud0.com" \
org.label-schema.vcs-description="centos7 Base Image-minimal" \
org.label-schema.docker.cmd="docker run centos7" \
org.label-schema.vendor="CentOS" \
org.label-schema.license="GPLv2" \
org.label-schema.build-date="20190801"
ADD centos-7.2.1511-docker.tar.xz /
CMD ["/bin/bash"]
Build the Image
$ docker build -t centos7base .
Sending build context to Docker daemon 41.64MB
Step 1/4 : FROM scratch
--->
Step 2/4 : LABEL org.label-schema.schema-version "1.0" org.label-schema.name "CentOS Base Image" maintainer "https://0cloud0.com" org.label-schema.vcs-description "centos7 Base Image-minimal" org.label-schema.docker.cmd "docker run centos7" org.label-schema.vendor "CentOS" org.label-schema.license "GPLv2" org.label-schema.build-date "20190801"
---> Running in ba49592c00d7
---> b41063db123d
Removing intermediate container ba49592c00d7
Step 3/4 : ADD centos-7.2.1511-docker.tar.xz /
---> e37168ffbf32
Step 4/4 : CMD /bin/bash
---> Running in 6a717baa623a
---> 381e5df2768e
Removing intermediate container 6a717baa623a
Successfully built 381e5df2768e
Successfully tagged centos7base:latest
Run the Image and open the Interactive Terminal
$ docker run -it centos7base sh
sh-4.2#
Check the Centos7 Base release version.
sh-4.2# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
The Dockerfile
of creating Debian 10 base Image. The rootfs.tar.xz contains all the files system files for Debian 10.
FROM scratch
LABEL org.label-schema.schema-version="1.0" \
org.label-schema.name="Debian Base Image" \
maintainer="https://0cloud0.com Anish Nath" \
org.label-schema.vcs-description="Debian 10 Base Image-minimal" \
org.label-schema.docker.cmd="docker run -it debian sh" \
org.label-schema.vendor="Debian" \
org.label-schema.license="GPLv2" \
org.label-schema.build-date="20190801"
ADD rootfs.tar.xz /
CMD ["/bin/bash"]
Build the Image
$ docker build -t debianbase .
Sending build context to Docker daemon 70.14kB
Step 1/4 : FROM scratch
--->
Step 2/4 : LABEL org.label-schema.schema-version "1.0" org.label-schema.name "Debian Base Image" maintainer "https://0cloud0.com Anish Nath" org.label-schema.vcs-description "centos7 Base Image-minimal" org.label-schema.docker.cmd "docker run -it debian sh" org.label-schema.vendor "Debian" org.label-schema.license "GPLv2" org.label-schema.build-date "20190801"
---> Running in b26251a26114
---> 56ab96d932a9
Removing intermediate container b26251a26114
Step 3/4 : ADD rootfs.tar.xz /
---> 64fa174d654d
Step 4/4 : CMD /bin/bash
---> Running in 87a6abd6b93a
---> 9233dd6b47b6
Removing intermediate container 87a6abd6b93a
Successfully built 9233dd6b47b6
Successfully tagged debianbase:latest
Run the Image and open the Interactive Terminal
$ docker run -it debian sh
# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
The Dockerfile
of creating Ubuntu19.04 base Image. The ubuntu-base-19.04-base-amd64.tar.gz contains all the files system files for Ubuntu19.04.
FROM scratch
LABEL org.label-schema.schema-version="1.0" \
org.label-schema.name="Ubuntu Base Image" \
maintainer="https://0cloud0.com Anish Nath" \
org.label-schema.vcs-description="ubuntu Base Image-minimal" \
org.label-schema.docker.cmd="docker run -it ubuntu sh" \
org.label-schema.vendor="ubuntu" \
org.label-schema.license="GPLv2" \
org.label-schema.build-date="20190801"
ADD ubuntu-base-19.04-base-amd64.tar.gz /
CMD ["/bin/bash"]
Build the Image
$ docker build -t ubuntu19.04base .
Sending build context to Docker daemon 28.99MB
Step 1/4 : FROM scratch
--->
Step 2/4 : LABEL org.label-schema.schema-version "1.0" org.label-schema.name "Ubuntu Base Image" maintainer "https://leanpub.com/dockerfile Anish Nath" org.label-schema.vcs-description "ubuntu Base Image-minimal" org.label-schema.docker.cmd "docker run -it ubuntu sh" org.label-schema.vendor "ubuntu" org.label-schema.license "GPLv2" org.label-schema.build-date "20190801"
---> Running in 162d2059edb9
---> 5525d0accb3e
Removing intermediate container 162d2059edb9
Step 3/4 : ADD ubuntu-base-19.04-base-amd64.tar.gz /
---> aa40149e0c02
Step 4/4 : CMD /bin/bash
---> Running in aaceddab6dce
---> b1ddc781e8b2
Removing intermediate container aaceddab6dce
Successfully built b1ddc781e8b2
Successfully tagged ubuntu19.04base:latest
Run the Image and open the Interactive Terminal
$ docker run -it ubuntu19.04base sh
# cat /etc/os-release
NAME="Ubuntu"
VERSION="19.04 (Disco Dingo)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 19.04"
VERSION_ID="19.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=disco
UBUNTU_CODENAME=disco
# exit
Now that you have a base image installed, you have many choices for what to do next.
Next Reading : Docker Private Repo Setup
Thanku for reading !!! Give a Share for Support
Asking for donation sound bad to me, so i'm raising fund from by offering all my Nine book for just $9