「Minimal Ubuntu」とは?Google Compute Engineで早速試してみた!

2018年7月9日、Ubuntuの開発を支援しているCanonical社が、「Minimal Ubuntu」というクラウドやコンテナ向けの向けのイメージをリリースしました。以下のブログでアナウンスされています。

Minimal Ubuntu, on public clouds and Docker Hub | Ubuntu blog

「Minimal Ubuntu」は、人が直接ログインしないクラウド向けの最小構成としたことで、イメージサイズが通常のUbuntuサーバーの50%となっており、起動時間も40%短くなっているとのことです。

Ubuntu 16.04 LTSとUbuntu 18.04 LTSのUbuntu Minimalイメージが、Amazon EC2、Google Compute Engine(GCE)、LXD、KVM、OpenStackで利用可能となっています。

プライベートクラウド用のイメージは、次のURLからダウンロードできます。

http://cloud-images.ubuntu.com/minimal/releases/

また、Amazon EC2のAMIイメージとしても利用可能となっていることを確認できました。

このリンクから、東京リージョンのイメージを参照できます(参照するにはEC2へのログインが必要)。

また、Google Compute Engine(GCE)でもUbuntu Minimalが選択可能となっています。

そこで、GCEで「Ubuntu 18.04 LTS Minimal」と「Ubuntu 18.04 LTS」をインストールして比較してみました。

まず、「Ubuntu 18.04 LTS Minimal」のディスク消費量は、以下の通り「802MB」でした。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       9.6G  802M  8.8G   9% /
devtmpfs        288M     0  288M   0% /dev
tmpfs           291M     0  291M   0% /dev/shm
tmpfs           291M  844K  290M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           291M     0  291M   0% /sys/fs/cgroup
/dev/sda15      105M  3.4M  102M   4% /boot/efi
/dev/loop0       87M   87M     0 100% /snap/core/4917
/dev/loop1       49M   49M     0 100% /snap/google-cloud-sdk/41
tmpfs            59M     0   59M   0% /run/user/1001

一方、通常の「Ubuntu 18.04 LTS」は、「1.1GB」でした。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            279M     0  279M   0% /dev
tmpfs            59M  852K   58M   2% /run
/dev/sda1       9.6G  1.1G  8.5G  12% /
tmpfs           291M     0  291M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           291M     0  291M   0% /sys/fs/cgroup
/dev/sda15      105M  3.4M  102M   4% /boot/efi
/dev/loop0       87M   87M     0 100% /snap/core/4650
/dev/loop1       48M   48M     0 100% /snap/google-cloud-sdk/38
tmpfs            59M     0   59M   0% /run/user/1001

イメージサイズほどの違いはないですが、Minimalのほうが約30%小さくなっています。

インストールされているパッケージを比較したところ、「Ubuntu 18.04 LTS」にインストールされていて、「Ubuntu 18.04 LTS Minimal」にインストールされていないパッケージは以下のリストの通り「163」ありました。

accountsservice
apport-symptoms
apt-utils
bash-completion
bind9-host
bsdmainutils
busybox-initramfs
busybox-static
byobu
cloud-initramfs-copymods
cloud-initramfs-dyn-netconf
command-not-found
command-not-found-data
console-setup
console-setup-linux
cpio
debconf-i18n
dmidecode
dnsutils
dosfstools
ed
eject
file
friendly-recovery
ftp
geoip-database
git
hdparm
info
init
initramfs-tools
initramfs-tools-bin
initramfs-tools-core
install-info
iputils-ping
iputils-tracepath
iso-codes
kbd
keyboard-configuration
klibc-utils
landscape-common
language-selector-common
less
libaccountsservice0
libbind9-160
libcurl3-gnutls
libdns1100
libdrm-common
libdrm2
libdumbnet1
liberror-perl
libevent-2.1-6
libfribidi0
libgeoip1
libicu60
libirs160
libisc169
libisccc160
libisccfg160
libklibc
liblwres160
libmagic-mgc
libmagic1
libmspack0
libnewt0.52
libnih1
libntfs-3g88
libnuma1
libparted2
libpcap0.8
libpci3
libpipeline1
libplymouth4
libpolkit-agent-1-0
libpolkit-backend-1-0
libpolkit-gobject-1-0
libpython3.6
libslang2
libtext-charwidth-perl
libtext-iconv-perl
libtext-wrapi18n-perl
libunwind8
libusb-1.0-0
libutempter0
libx11-6
libx11-data
libxau6
libxcb1
libxdmcp6
libxext6
libxml2
libxmlsec1
libxmlsec1-openssl
libxmuu1
libxslt1.1
locales
lshw
lsof
ltrace
man-db
manpages
mlocate
mtr-tiny
nano
ncurses-term
netcat-openbsd
ntfs-3g
open-vm-tools
overlayroot
parted
pastebinit
pciutils
plymouth
plymouth-theme-ubuntu-text
policykit-1
popularity-contest
powermgmt-base
psmisc
publicsuffix
python3-attr
python3-automat
python3-click
python3-colorama
python3-commandnotfound
python3-constantly
python3-gdbm
python3-hyperlink
python3-incremental
python3-newt
python3-pam
python3-pyasn1
python3-pyasn1-modules
python3-service-identity
python3-software-properties
python3-twisted
python3-twisted-bin
python3-zope.interface
run-one
screen
shared-mime-info
software-properties-common
strace
tcpdump
telnet
time
tmux
tzdata
ubuntu-advantage-tools
ubuntu-minimal
ubuntu-server
ubuntu-standard
ufw
ureadahead
usbutils
uuid-runtime
vim
vim-common
vim-runtime
vim-tiny
whiptail
xauth
xdg-user-dirs
xkb-data

なお、「Ubuntu 18.04 LTS」はパッケージ数が510、「Ubuntu 18.04 LTS Minimal」はパッケージ数が347でした。

「人がログインして操作すること」は想定されていないため、Vimやnanoといったテキストエディター、ページャー(less)、ターミナルマルチプレクサ関係(byobu・tmux・screen)、Tab補完を強化するbash-completionなどなど、多くのパッケージが削除されていることが分かります。「Minimal Ubuntu」に含まれるパッケージの一覧は、次のURLで確認できます。

Minimal Ubuntu 18.04 LTS のイメージに含まれるパッケージ
https://cloud-images.ubuntu.com/minimal/releases/bionic/release/ubuntu-18.04-minimal-cloudimg-amd64.manifest
Minimal Ubuntu 16.04 LTS のイメージに含まれるパッケージ
https://cloud-images.ubuntu.com/minimal/releases/xenial/release/ubuntu-16.04-minimal-cloudimg-amd64-root.manifest

パッケージを最小限に絞ることで、クラウドやコンテナで用いるUbuntuのサイズが小さくなるだけでなく、セキュリティリスクも最小化することができます。
クラウドやコンテナで最も用いられているUbuntuですが、今後は「Minimal Ubuntu」の採用が広がっていくように思われます。