Đã chạy script oraclelinux9-oraclelinux9-slim.sh ở bài trên
1. Chạy LAB
# Giả sử có ổ đĩa D:
# Tạo thư mục D:\docker-optimize + chuyển vào thư mục
mkdir D:\docker-optimize > $null ; cd D:\docker-optimize
# Khai báo biến là link tới file cần download
$URL="https://devsecops.edu.vn/wp-content/uploads/2023/11/docker-optimize-GAyRGCUFbMk5NY4kiXcreDWMXgkTlo.zip"
# Download file zìa
Invoke-WebRequest -URI $URL -OutFile docker-optimize.zip
# Giải nén file + đổi tên
Expand-Archive docker-optimize.zip -DestinationPath .
# Coi trong thư mục đang đứng có gì
dir
# Tạo máy ảo + chạy LAB từ A tới Á
vagrant up
2. Phân tích rõ điểm khác nhau của bookworm và bookworm-slim
2.1 Số lượng gói (package) đã cài
Như nhau = 88 gói
2.2 So sánh size các thư mục ở /
Khác nhau ở /etc và /usr
bookworm-slim ít hơn bookworm ở /usr tới 45M
2.3 So sánh size của /etc
bookworm-slim có thêm thư mục /etc/docker
2.4 So sánh size của /usr
Khác nhau trong /usr/share
2.5 So sánh size của /usr/share
Khác nhau ở /usr/share/doc, /usr/share/info, /usr/share/lintian, /usr/share/locale, /usr/share/man
2.6 So sánh size của /usr/share/doc
Document của các công cụ lệnh như adduser, apt, base-files… ở bookworm-slim nhỏ gọn hơn
→ vì môi trường container chỉ để chạy software, application…
→ k phải là nơi chứa document → cái nào k cần thì bỏ bớt đi
2.7 So sánh size công cụ util-linux trong /usr/share/doc/util-linux
bookworm-slim chỉ để file copyright là file tối thiểu của util-linux trong /usr/share/doc/util-linux
2.8 So sánh size thư viện libc6 trong /usr/share/doc/libc6
bookworm-slim chỉ để file copyright là file tối thiểu của libc6 trong /usr/share/doc/libc6
2.9 So sánh size của tar trong /usr/share/doc/tar
bookworm-slim chỉ để file copyright là file tối thiểu của tar trong /usr/share/doc/tar
Các bạn soi tiếp trong /usr/share/{info,lintian,locale,man} khác nhau chỗ mô
3. Toàn bộ output của bookworm-bookworm-slim.sh
--- bookworm trước, bookworm-slim sau ---
1. So sánh số lượng gói (package) đã cài
88
88
2. So sánh size các thư mục ở /
diff --git a/root-size.txt b/root-size-slim.txt
index 4c82bc8..65f041a 100644
--- a/root-size.txt
+++ b/root-size-slim.txt
@@ -1,7 +1,7 @@
0 /bin
4.0K /boot
0 /dev
-628K /etc
+632K /etc
4.0K /home
0 /lib
0 /lib32
@@ -17,5 +17,5 @@
4.0K /srv
0 /sys
4.0K /tmp
-121M /usr
+76M /usr
5.6M /var
3. So sánh size của /etc
diff --git a/etc.txt b/etc-slim.txt
index 39f7275..9379620 100644
--- a/etc.txt
+++ b/etc-slim.txt
@@ -182,9 +182,10 @@ drwxr-xr-x 2 root root 4096 Nov 20 00:00 dpkg.cfg.d
drwxr-xr-x 2 root root 4096 Nov 20 00:00 origins
/etc/dpkg/dpkg.cfg.d:
-total 12
+total 16
drwxr-xr-x 2 root root 4096 Nov 20 00:00 .
drwxr-xr-x 4 root root 4096 Nov 20 00:00 ..
+-rw-r--r-- 1 root root 3733 Nov 20 00:00 docker
-rw-r--r-- 1 root root 259 Nov 20 00:00 docker-apt-speedup
/etc/dpkg/origins:
4. So sánh size của /usr
diff --git a/usr-size.txt b/usr-size-slim.txt
index 375d1b0..585aeb6 100644
--- a/usr-size.txt
+++ b/usr-size-slim.txt
@@ -8,5 +8,5 @@
4.0K /usr/libx32
40K /usr/local
6.3M /usr/sbin
-53M /usr/share
+7.2M /usr/share
4.0K /usr/src
5. So sánh size của /usr/share
diff --git a/share-size.txt b/share-size-slim.txt
index 82889cf..f1df268 100644
--- a/share-size.txt
+++ b/share-size-slim.txt
@@ -6,17 +6,17 @@
24K /usr/share/debconf
20K /usr/share/debianutils
4.0K /usr/share/dict
-8.7M /usr/share/doc
+1.5M /usr/share/doc
12K /usr/share/doc-base
28K /usr/share/dpkg
140K /usr/share/gcc
24K /usr/share/gdb
-540K /usr/share/info
+4.0K /usr/share/info
192K /usr/share/keyrings
8.0K /usr/share/libc-bin
-140K /usr/share/lintian
-33M /usr/share/locale
-5.3M /usr/share/man
+20K /usr/share/lintian
+4.0K /usr/share/locale
+20K /usr/share/man
12K /usr/share/menu
4.0K /usr/share/misc
44K /usr/share/pam
6. So sánh size của /usr/share/doc
diff --git a/doc-size.txt b/doc-size-slim.txt
index cb1c430..cbb9803 100644
--- a/doc-size.txt
+++ b/doc-size-slim.txt
@@ -1,86 +1,85 @@
-156K /usr/share/doc/adduser
-88K /usr/share/doc/apt
-40K /usr/share/doc/base-files
-52K /usr/share/doc/base-passwd
-356K /usr/share/doc/bash
-44K /usr/share/doc/bsdutils
-248K /usr/share/doc/coreutils
-32K /usr/share/doc/dash
-20K /usr/share/doc/debconf
-44K /usr/share/doc/debianutils
-64K /usr/share/doc/diffutils
-264K /usr/share/doc/dpkg
-168K /usr/share/doc/e2fsprogs
-260K /usr/share/doc/findutils
-100K /usr/share/doc/gcc-12-base
-452K /usr/share/doc/gpgv
-212K /usr/share/doc/grep
-76K /usr/share/doc/gzip
-12K /usr/share/doc/hostname
-32K /usr/share/doc/init-system-helpers
-28K /usr/share/doc/libacl1
-36K /usr/share/doc/libapt-pkg6.0
-24K /usr/share/doc/libattr1
-20K /usr/share/doc/libaudit-common
-20K /usr/share/doc/libaudit1
-44K /usr/share/doc/libblkid1
-32K /usr/share/doc/libbz2-1.0
-64K /usr/share/doc/libc-bin
-200K /usr/share/doc/libc6
-20K /usr/share/doc/libcap-ng0
-20K /usr/share/doc/libcap2
-32K /usr/share/doc/libcom-err2
-28K /usr/share/doc/libcrypt1
-32K /usr/share/doc/libdb5.3
-16K /usr/share/doc/libdebconfclient0
-32K /usr/share/doc/libext2fs2
-20K /usr/share/doc/libffi8
+20K /usr/share/doc/adduser
+12K /usr/share/doc/apt
+8.0K /usr/share/doc/base-files
+8.0K /usr/share/doc/base-passwd
+16K /usr/share/doc/bash
+28K /usr/share/doc/bsdutils
+12K /usr/share/doc/coreutils
+8.0K /usr/share/doc/dash
+8.0K /usr/share/doc/debconf
+16K /usr/share/doc/debianutils
+20K /usr/share/doc/diffutils
+12K /usr/share/doc/dpkg
+20K /usr/share/doc/e2fsprogs
+32K /usr/share/doc/findutils
+72K /usr/share/doc/gcc-12-base
+16K /usr/share/doc/gpgv
+8.0K /usr/share/doc/grep
+8.0K /usr/share/doc/gzip
+8.0K /usr/share/doc/hostname
+8.0K /usr/share/doc/init-system-helpers
+8.0K /usr/share/doc/libacl1
+12K /usr/share/doc/libapt-pkg6.0
+8.0K /usr/share/doc/libattr1
+8.0K /usr/share/doc/libaudit-common
+8.0K /usr/share/doc/libaudit1
+28K /usr/share/doc/libblkid1
+8.0K /usr/share/doc/libbz2-1.0
+32K /usr/share/doc/libc-bin
+32K /usr/share/doc/libc6
+8.0K /usr/share/doc/libcap-ng0
+12K /usr/share/doc/libcap2
+20K /usr/share/doc/libcom-err2
+12K /usr/share/doc/libcrypt1
+24K /usr/share/doc/libdb5.3
+12K /usr/share/doc/libdebconfclient0
+20K /usr/share/doc/libext2fs2
+16K /usr/share/doc/libffi8
0 /usr/share/doc/libgcc-s1
-276K /usr/share/doc/libgcrypt20
-340K /usr/share/doc/libgmp10
-548K /usr/share/doc/libgnutls30
-32K /usr/share/doc/libgpg-error0
-160K /usr/share/doc/libhogweed6
-60K /usr/share/doc/libidn2-0
-12K /usr/share/doc/liblz4-1
-140K /usr/share/doc/liblzma5
-24K /usr/share/doc/libmd0
-44K /usr/share/doc/libmount1
-188K /usr/share/doc/libnettle8
-176K /usr/share/doc/libp11-kit0
-68K /usr/share/doc/libpam-modules
-60K /usr/share/doc/libpam-modules-bin
-60K /usr/share/doc/libpam-runtime
-76K /usr/share/doc/libpam0g
-68K /usr/share/doc/libpcre2-8-0
-20K /usr/share/doc/libseccomp2
-16K /usr/share/doc/libselinux1
-24K /usr/share/doc/libsemanage-common
-16K /usr/share/doc/libsemanage2
-12K /usr/share/doc/libsepol2
-44K /usr/share/doc/libsmartcols1
-32K /usr/share/doc/libss2
+32K /usr/share/doc/libgcrypt20
+12K /usr/share/doc/libgmp10
+56K /usr/share/doc/libgnutls30
+12K /usr/share/doc/libgpg-error0
+32K /usr/share/doc/libhogweed6
+12K /usr/share/doc/libidn2-0
+8.0K /usr/share/doc/liblz4-1
+20K /usr/share/doc/liblzma5
+12K /usr/share/doc/libmd0
+28K /usr/share/doc/libmount1
+32K /usr/share/doc/libnettle8
+16K /usr/share/doc/libp11-kit0
+16K /usr/share/doc/libpam-modules
+16K /usr/share/doc/libpam-modules-bin
+16K /usr/share/doc/libpam-runtime
+16K /usr/share/doc/libpam0g
+12K /usr/share/doc/libpcre2-8-0
+8.0K /usr/share/doc/libseccomp2
+8.0K /usr/share/doc/libselinux1
+8.0K /usr/share/doc/libsemanage-common
+8.0K /usr/share/doc/libsemanage2
+8.0K /usr/share/doc/libsepol2
+28K /usr/share/doc/libsmartcols1
+20K /usr/share/doc/libss2
0 /usr/share/doc/libstdc++6
-52K /usr/share/doc/libsystemd0
-44K /usr/share/doc/libtasn1-6
-256K /usr/share/doc/libtinfo6
-52K /usr/share/doc/libudev1
-32K /usr/share/doc/libunistring2
-44K /usr/share/doc/libuuid1
-16K /usr/share/doc/libxxhash0
-40K /usr/share/doc/libzstd1
-172K /usr/share/doc/login
-32K /usr/share/doc/logsave
-116K /usr/share/doc/mawk
-64K /usr/share/doc/mount
-264K /usr/share/doc/ncurses-base
-256K /usr/share/doc/ncurses-bin
-188K /usr/share/doc/passwd
-36K /usr/share/doc/perl
-120K /usr/share/doc/perl-base
-164K /usr/share/doc/sed
-20K /usr/share/doc/sysvinit-utils
-276K /usr/share/doc/tar
-92K /usr/share/doc/tzdata
-512K /usr/share/doc/util-linux
-44K /usr/share/doc/zlib1g
+20K /usr/share/doc/libsystemd0
+8.0K /usr/share/doc/libtasn1-6
+12K /usr/share/doc/libtinfo6
+20K /usr/share/doc/libudev1
+12K /usr/share/doc/libunistring2
+28K /usr/share/doc/libuuid1
+8.0K /usr/share/doc/libxxhash0
+12K /usr/share/doc/libzstd1
+12K /usr/share/doc/login
+20K /usr/share/doc/logsave
+28K /usr/share/doc/mawk
+28K /usr/share/doc/mount
+12K /usr/share/doc/ncurses-base
+12K /usr/share/doc/ncurses-bin
+12K /usr/share/doc/passwd
+112K /usr/share/doc/perl-base
+16K /usr/share/doc/sed
+12K /usr/share/doc/sysvinit-utils
+8.0K /usr/share/doc/tar
+8.0K /usr/share/doc/tzdata
+28K /usr/share/doc/util-linux
+8.0K /usr/share/doc/zlib1g
7. So sánh size công cụ util-linux
total 176K
-rw-r--r-- 1 root root 260 Feb 2 2021 00-about-docs.txt
-rw-r--r-- 1 root root 16K Aug 4 2022 AUTHORS.gz
-rw-r--r-- 1 root root 671 Feb 2 2021 PAM-configuration.txt
-rw-r--r-- 1 root root 481 Feb 13 2023 README.Debian
-rw-r--r-- 1 root root 3.2K Feb 2 2021 blkid.txt
-rw-r--r-- 1 root root 2.3K May 6 2021 cal.txt
-rw-r--r-- 1 root root 235 Mar 23 2023 changelog.Debian.amd64.gz
-rw-r--r-- 1 root root 7.5K Mar 23 2023 changelog.Debian.gz
-rw-r--r-- 1 root root 113 Aug 4 2022 changelog.gz
-rw-r--r-- 1 root root 1.9K Feb 2 2021 col.txt
-rw-r--r-- 1 root root 23K Feb 13 2023 copyright
-rw-r--r-- 1 root root 3.1K May 11 2022 deprecated.txt
drwxr-xr-x 2 root root 4.0K Nov 20 00:00 examples
-rw-r--r-- 1 root root 992 Feb 2 2021 getopt.txt
-rw-r--r-- 1 root root 1.9K May 6 2021 getopt_changelog.txt
-rw-r--r-- 1 root root 3.2K Feb 2 2021 howto-build-sys.txt
-rw-r--r-- 1 root root 2.9K May 11 2022 howto-compilation.txt
-rw-r--r-- 1 root root 3.5K May 11 2022 howto-contribute.txt.gz
-rw-r--r-- 1 root root 2.4K Feb 2 2021 howto-debug.txt
-rw-r--r-- 1 root root 126 May 11 2022 howto-man-page.txt
-rw-r--r-- 1 root root 4.3K May 11 2022 howto-pull-request.txt.gz
-rw-r--r-- 1 root root 3.9K May 11 2022 howto-tests.txt
-rw-r--r-- 1 root root 2.3K Feb 2 2021 howto-usage-function.txt.gz
-rw-r--r-- 1 root root 147 May 6 2021 hwclock.txt
-rw-r--r-- 1 root root 2.6K May 6 2021 modems-with-agetty.txt
-rw-r--r-- 1 root root 521 May 6 2021 mount.txt
-rw-r--r-- 1 root root 8.0K Feb 2 2021 parse-date.txt.gz
-rw-r--r-- 1 root root 448 Feb 2 2021 pg.txt
-rw-r--r-- 1 root root 8.7K May 6 2021 poeigl.txt.gz
-rw-r--r-- 1 root root 1.4K May 11 2022 release-schedule.txt
drwxr-xr-x 2 root root 4.0K Nov 20 00:00 releases
total 24K
-rw-r--r-- 1 root root 23K Feb 13 2023 copyright
8. So sánh size thư viện libc6
total 196K
-rw-r--r-- 1 root root 2.4K Sep 30 08:31 NEWS.Debian.gz
-rw-r--r-- 1 root root 122K Sep 30 08:31 NEWS.gz
-rw-r--r-- 1 root root 2.6K Sep 30 08:31 README.Debian.gz
-rw-r--r-- 1 root root 2.4K Jul 29 2022 README.hesiod.gz
-rw-r--r-- 1 root root 26K Sep 30 08:31 changelog.Debian.gz
-rw-r--r-- 1 root root 153 Sep 22 2022 changelog.gz
-rw-r--r-- 1 root root 25K Sep 22 2022 copyright
total 28K
-rw-r--r-- 1 root root 25K Sep 22 2022 copyright
9. So sánh size thư viện tar
total 272K
-rw-r--r-- 1 root root 601 Feb 17 2021 AUTHORS
-rw-r--r-- 1 root root 23K Feb 17 2021 NEWS.gz
-rw-r--r-- 1 root root 849 Apr 6 2023 README.Debian
-rw-r--r-- 1 root root 11K Feb 17 2021 THANKS.gz
-rw-r--r-- 1 root root 62K Feb 17 2021 changelog.1.gz
-rw-r--r-- 1 root root 721 Apr 6 2023 changelog.Debian.gz
-rw-r--r-- 1 root root 153K Feb 17 2021 changelog.gz
-rw-r--r-- 1 root root 3.8K Apr 6 2023 copyright
total 4.0K
-rw-r--r-- 1 root root 3.8K Apr 6 2023 copyright
2. Các file nội dung mới nhứt ở đây
Vagrantfile
Vagrant.configure("2") do |config|
config.vm.define "vb" do |vb|
vb.vm.box = "ubuntu/jammy64"
vb.vm.hostname = 'ubuntu2204'
vb.vm.provider :virtualbox do |v|
v.gui = true
v.cpus = 2
v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
v.customize ["modifyvm", :id, "--memory", 2048]
v.customize ["modifyvm", :id, "--name", "ubuntu2204-docker-optimize"]
end
vb.vm.provision "shell", path: "bookworm-bookworm-slim.sh"
vb.vm.provision "shell", path: "oraclelinux9-oraclelinux9-slim.sh"
end
end
bookworm-bookworm-slim.sh
#!/bin/bash
echo -e "\n0. Cài cắm Docker + lấy cục bookworm và bookworm-slim zìa\n"
apt update && apt install docker.io git -y
docker pull debian:bookworm
docker pull debian:bookworm-slim
echo -e "\n--- bookworm trước, bookworm-slim sau ---"
echo -e "\n1. So sánh số lượng gói (package) đã cài\n"
docker run debian:bookworm dpkg --get-selections | wc -l
docker run debian:bookworm-slim dpkg --get-selections | wc -l
echo -e "\n2. So sánh size các thư mục ở /\n"
docker run debian:bookworm du -sh /* > root-size.txt 2>/dev/null
docker run debian:bookworm-slim du -sh /* > root-size-slim.txt 2>/dev/null
git diff root-size.txt root-size-slim.txt
echo -e "\n3. So sánh size của /etc\n"
docker run debian:bookworm ls -laR /etc > etc.txt
docker run debian:bookworm-slim ls -laR /etc > etc-slim.txt
# Chạy lịnh không thấy kết quả gì --> không có gì khác nhau
# cmp etc.txt etc-slim.txt
git diff etc.txt etc-slim.txt
echo -e "\n4. So sánh size của /usr\n"
docker run debian:bookworm du -sh /usr/* > usr-size.txt 2>/dev/null
docker run debian:bookworm-slim du -sh /usr/* > usr-size-slim.txt 2>/dev/null
git diff usr-size.txt usr-size-slim.txt
echo -e "\n5. So sánh size của /usr/share\n"
docker run debian:bookworm du -sh /usr/share/* > share-size.txt 2>/dev/null
docker run debian:bookworm-slim du -sh /usr/share/* > share-size-slim.txt 2>/dev/null
git diff share-size.txt share-size-slim.txt
echo -e "\n6. So sánh size của /usr/share/doc\n"
docker run debian:bookworm du -sh /usr/share/doc/* > doc-size.txt 2>/dev/null
docker run debian:bookworm-slim du -sh /usr/share/doc/* > doc-size-slim.txt 2>/dev/null
git --no-pager diff doc-size.txt doc-size-slim.txt
echo -e "\n7. So sánh size công cụ util-linux\n"
docker run debian:bookworm ls -lh /usr/share/doc/util-linux
docker run debian:bookworm-slim ls -lh /usr/share/doc/util-linux
echo -e "\n8. So sánh size thư viện libc6\n"
docker run debian:bookworm ls -lh /usr/share/doc/libc6
docker run debian:bookworm-slim ls -lh /usr/share/doc/libc6
echo -e "\n9. So sánh size thư viện tar\n"
docker run debian:bookworm ls -lh /usr/share/doc/tar
docker run debian:bookworm-slim ls -lh /usr/share/doc/tar
# END
oraclelinux9-oraclelinux9-slim.sh
#!/bin/bash
echo -e "\n0. Lấy 2 cục image về trước\n"
docker pull oraclelinux:9
docker pull oraclelinux:9-slim
echo -e "\n1. So sánh size của oraclelinux9 và oraclelinux9-slim\n"
docker images
echo -e "\n2. So sánh số lượng gói (package) đã cài\n"
docker run oraclelinux:9 rpm -qa | wc -l
docker run oraclelinux:9-slim rpm -qa | wc -l
echo -e "\n3. Xài git để coi gói nào chỉ có trên 9 và 9-slim đã cài"
echo -e "So sánh 9-slim trước, 9 sau"
echo -e "Dấu + là chỉ có trên 9, dấu - là chỉ có trên 9-slim"
docker run oraclelinux:9 rpm -qa | sort > 9.txt
docker run oraclelinux:9-slim rpm -qa | sort > 9-slim.txt
echo -e "\nCác gói chỉ có trên oracle 9"
git diff 9-slim.txt 9.txt | grep ^+[a-z]
echo -e "\nCác gói chỉ có trên oracle 9 slim"
git diff 9-slim.txt 9.txt | grep ^-[a-z]
echo -e "\n4. Đi vào chi tiết các gói trên 9 và 9-slim"
echo -e "\n4.1 Gói coreutils trên oracle 9 slim"
docker run oraclelinux:9-slim rpm -qa | grep coreutils
echo -e "\nGói coreutils trên oracle 9"
docker run oraclelinux:9 rpm -qa | grep coreutils
echo -e "\n4.2 Gói glibc trên oracle 9 slim"
docker run oraclelinux:9-slim rpm -qa | grep glibc
echo -e "\nGói glibc trên oracle 9"
docker run oraclelinux:9 rpm -qa | grep glibc
echo -e "\n4.3 Gói gobject trên oracle 9 slim"
docker run oraclelinux:9-slim rpm -qa | grep gobject
echo -e "\nGói gobject trên oracle 9"
docker run oraclelinux:9 rpm -qa | grep gobject
echo -e "\n4.4 Gói libpeas trên oracle 9 slim"
docker run oraclelinux:9-slim rpm -qa | grep libpeas
echo -e "\nGói libpeas trên oracle 9"
docker run oraclelinux:9 rpm -qa | grep libpeas
echo -e "\n4.5 Gói dnf trên oracle 9 slim"
docker run oraclelinux:9-slim rpm -qa | grep dnf
echo -e "\nGói dnf trên oracle 9"
docker run oraclelinux:9 rpm -qa | grep dnf
echo
# END