スタンドアローン型のコンテナのベースとなるイメージである。以下に Dockerfile 内の設定について説明する。
yum update
OSを更新する。マイナー番号も最新となるので、注意が必要である。
yum -y install unzip wget lsof telnet bind-utils tar tcpdump vim strace less python3
ビルドやデバッグに必要となる標準的なツールをインストールする。
ENV HOME /root
WORKDIR ${HOME}
RUN echo "export TERM=xterm" >> .bash_profile
docker exec でシェルを実行する際に、ログインしたのと近い状態にする。
ENV container docker
シャットダウン後に systemd のプロセスを終了するように環境変数を設定する。 https://github.com/systemd/systemd/blob/master/src/basic/virt.c の detect_container でこの環境変数を検知するが、systemd のソースコードで detect_container を検索すると36個ヒットする。様々な処理の判断で使われているが、そのうちの1個でシャットダウン時の挙動の決定にも使われている。
STOPSIGNAL SIGRTMIN+3
docker stop でシャットダウンプロセスを実行するようにする。
RUN rm -f /lib/systemd/system/sysinit.target.wants/sys-fs-fuse-connections.mount
前項でコメントアウトした結果 FUSE Control File System (sys-fs-fuse-connections.mount) が有効になってしまい、起動時に以下のエラーが発生するため、無効化している。このコンテナでは FUSE は利用できない。
mount[19]: mount: permission denied
systemd[1]: sys-fs-fuse-connections.mount mount process exited, code=exited status=32
journalctl では、以下のエラーが出力されているが、docker swarm service として起動する場合は、 --privledged が利用できず、これを止める手段が見つかっていない。
systemd-journald.service: Couldn't add fd to fd store: Operation not permitted
Content type
Image
Digest
Size
170.5 MB
Last updated
over 4 years ago
docker pull procube/alma8-standalone-base