Docker コンテナはなぜ root で動くのか

コンテナも root のままにせず、専用ユーザーの名札を持たせるのが今の定石
コンテナも root のままにせず、専用ユーザーの名札を持たせるのが今の定石

Docker コンテナはデフォルトで root ユーザーとして動作する。通常のサーバーでは「普段は一般ユーザー、必要な時だけ sudo」が鉄則だが、コンテナでは root が標準である。コンテナはホストOSからある程度隔離された環境として動作する。ただし、完全に無関係ではなく、設定や状況によってはホストに影響を与える可能性もある。

そのため、最近のベストプラクティスでは「コンテナ内でも一般ユーザーで動かす」方向に進んでいる。Dockerfile に USER 命令を書いてアプリ専用ユーザーで実行する。万が一の脆弱性に備えた多重防御の考え方だ。

「ユーザーとグループ」の知識は、サーバー管理だけでなくコンテナの世界でも活きる。RUN useradd で Dockerfile にユーザーを作り、USER で切り替える。ターミナルで使うコマンドが、そのまま使われている。