Dockerのお勉強 - Alpine Linux
DockerではAlpineっていうミニミニLinuxを使うのがいいらしい
デバイスとかサービスとかほとんどいらない感じだからそれがいいよね
小さければ脆弱性が入る余地も減るし
まずは軽く調べてみよう
公式
Small. Simple. Secure.
Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.
セキュリティも推し要素なんだな
ところでDocker界隈だとセキュリティホールが見つかったってときは
どうするのが普通なんだろう?
深刻なやつは即当てるけどそうでもなければもとのイメージで対策されるのを
待ってイメージを作り直す感じ?
muslはglibc互換のCライブラリ、BusiBoxはコマンドの実体らしい
musl (マッスル) は MIT License[1] でリリースされている Linux の標準Cライブラリ。開発者は Rich Felker。クリーンで、効率的で、標準に準拠した標準Cライブラリの実装を目標としている。
BusyBox は、Coreutilsなど標準UNIXコマンドで重要な多数のプログラムを単一の実行ファイルに「詰め込んで」提供する、特殊な方式のプログラムである(その詰め込み方法を指して呼ぶこともある)。
せっかくだからAlpine Linux自体も見ておこう
まあこれくらいにしてとりあえず動かしてみよう
必要だったら詳しく調べる
ってそもそもイメージ名はどうやって調べたらいいんだ
まずは当てずっぽうで
$ docker run -it alpine
Unable to find image 'alpine:latest' locally
latest: Pulling from library/alpine
4fe2ade4980c: Pull complete
Digest: sha256:621c2f39f8133acb8e64023a94dbdf0d5ca81896102b9e57c0dc184cadaf5528
Status: Downloaded newer image for alpine:latest
/ #
正解
適当にいじくってみる
/ # ps -ef
PID USER TIME COMMAND
1 root 0:00 /bin/sh
15 root 0:00 ps -ef
シンプル
っていうかほんとにこれで全部?
psのオプションってこうだったよね?
/ # man ps
/bin/sh: man: not found
あーそうねないね
ていうかbourne shellなのか
徹底してるな
/ # ps --help
BusyBox v1.28.4 (2018-07-17 15:21:40 UTC) multi-call binary.
Usage: ps [-o COL1,COL2=HEADER]
Show list of processes
-o COL1,COL2=HEADER Select columns for display
/ #
なんかシンプル -eとか-fもないってこと?
そしてBusyBoxが登場
/binでも見に行ってみよう
/ # cd bin
/bin # ls
arch dd fsync linux32 mountpoint reformime su
ash df getopt linux64 mpstat rev sync
base64 dmesg grep ln mv rm tar
bbconfig dnsdomainname gunzip login netstat rmdir touch
busybox dumpkmap gzip ls nice run-parts true
cat echo hostname lzop pidof sed umount
chgrp ed ionice makemime ping setpriv uname
chmod egrep iostat mkdir ping6 setserial usleep
chown false ipcalc mknod pipe_progress sh watch
conspy fatattr kbd_mode mktemp printenv sleep zcat
cp fdflush kill more ps stat
date fgrep link mount pwd stty
こころなしか少なめ
busyboxがいる
busybox以外は全部色が違うぞ?
/bin # ls -l
total 780
lrwxrwxrwx 1 root root 12 Sep 11 20:23 arch -> /bin/busybox
lrwxrwxrwx 1 root root 12 Sep 11 20:23 ash -> /bin/busybox
lrwxrwxrwx 1 root root 12 Sep 11 20:23 base64 -> /bin/busybox
lrwxrwxrwx 1 root root 12 Sep 11 20:23 bbconfig -> /bin/busybox
-rwxr-xr-x 1 root root 796312 Jul 17 15:22 busybox
lrwxrwxrwx 1 root root 12 Sep 11 20:23 cat -> /bin/busybox
:
:
lrwxrwxrwx 1 root root 12 Sep 11 20:23 zcat -> /bin/busybox
あー
単一の実行ファイルに詰め込むってそういうことか
なるほどこれは小さくなるな
/sbin、/usr/bin、/usr/sbinもほとんどbusyboxへのリンク
噂のapkは/sbinにあってこれは実体
shは名前はshだけどほんとにbourne shell互換なのか、ここだけではわからんな
OpenRCとやらもちょっと見てみたいけど今日はここまで