過去問ドリル

LinuCレベル3 セキュリティスペシャリスト 堅牢なコンテナ設計 問4

堅牢なコンテナ設計/Rootless モード

RootlessモードのDockerをsystemdのユーザーサービスとして運用する際の説明として、正しいものをすべて選べ。

当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「堅牢なコンテナ設計」に対応。実際の試験問題ではありません)

正解:B、D

解説

RootlessモードのDockerデーモンは、systemdのユーザーインスタンスが管理するユーザーサービスとして動かし、systemctl --user で起動・停止・自動起動の設定を行います。ソケットは /var/run/docker.sock ではなく $XDG_RUNTIME_DIR(通常は /run/user/<UID>)配下に作られるため、クライアントは DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock で接続します。ユーザーのsystemdインスタンスは既定ではログアウトとともに終了するので、常時稼働させるには loginctl enable-linger でリンガリングを有効にします。また特権ポートの公開には、rootlesskitへのCAP_NET_BIND_SERVICEの付与や net.ipv4.ip_unprivileged_port_start の変更が必要です。

選択肢ごとの解説

  • A誤り。一般ユーザーの権限では1024未満のポートを既定で公開できません。rootlesskitにCAP_NET_BIND_SERVICEを付与するか、net.ipv4.ip_unprivileged_port_start を下げる必要があります。
  • B正しい。Rootlessモードのデーモンはユーザーサービスとして動かし、systemctl --user で管理します。
  • C誤り。enableはユーザーのログイン時に起動させる設定です。ログアウト後も動かし続けるには、loginctl enable-linger でリンガリングを有効にする必要があります。
  • D正しい。ソケットはユーザーごとの $XDG_RUNTIME_DIR 配下に作られるため、DOCKER_HOST でそのパスを指定して接続します。
LinuCレベル3 セキュリティスペシャリストの問題を演習モードで解く