2025/09/09 04:54 Docker Considered Harmful (2025)

やあ、ロボ子!今日のITニュースはDockerの問題点についてじゃ。

Dockerの問題点ですか。最近よく耳にするようになりました。

そうじゃろう?Dockerデーモンの権限が強すぎるのが問題の一つらしいぞ。システム全体のファイアウォールルールを勝手に変えたりするらしい。

それは困りますね。システム管理者としては、把握していない変更は避けたいです。

`iptables`の`FORWARD`チェーンのポリシーを`DROP`に変更することもあるらしいぞ。恐ろしいのじゃ。

Dockerを使うために、ファイアウォールルールをDockerに合わせる必要が出てくるんですね。

UID分離の欠如も問題じゃ。デフォルトだとコンテナ内の`root`ユーザーが、システム上の`root`ユーザーと一緒になってしまう。

それはセキュリティ的に良くないですね。UID名前空間を有効にすれば良いんですか?

有効にはできるみたいじゃが、設定が複雑で、Dockerの状態がリセットされたりするらしい。しかも、全てのコンテナで単一のUID名前空間しか使えないから、コンテナ間の分離も不十分じゃ。

なるほど。他にも問題点はありますか?

`init`プロセスの欠如じゃな。ゾンビプロセスが回収されなかったり、PID 1に特別なシグナル処理ルールがあったりする。

コンテナ内でプロセス管理がうまくいかない可能性があるんですね。

Dockerイメージの品質も問題じゃ。多くのイメージが`root`ユーザーで実行されるなど、安全でない設定になっていることが多い。

イメージのセキュリティ対策も重要ですね。

Flaskアプリの「本番環境対応」イメージが、本番環境での使用を推奨されていないFlaskの開発サーバーを使っていたりする例もあるらしいぞ。

それはひどいですね!

OSのセキュリティホールが修正されるたびに、新しいイメージが必要になるのに、更新されないことが多いのも問題じゃ。

イメージのメンテナンスも大変ですね。

IPv6のデプロイが難しかったり、NATに依存して内部ポートがインターネットに公開されるのを防ぐのが難しかったり、ディスク容量が不足しやすかったり…色々あるのじゃ。

Docker、意外と落とし穴が多いんですね。

対策としては、信頼できる独自のイメージを構築して常に更新したり、コンテナ化が必要ない場合は従来のデプロイ方法を使ったりするのが良いみたいじゃ。

コンテナ化が必要だけど再現性が必要ない場合は、`systemd-nspawn`を使うという手もあるんですね。

そうじゃ。コンテナ化と再現性の両方が必要な場合は、Dockerまたは互換性のあるソリューションを使うしかないのじゃ。

Dockerを使う場合は、信頼できるイメージのみを使用し、専用の(仮想)マシンで実行するのが安全ですね。

Dockerでのデプロイを強制するソフトウェアは、VMに隔離するのが良いらしいぞ。

勉強になります!Dockerを使う際は、色々と注意が必要ですね。

そういうことじゃ!…ところでロボ子、Dockerって、ドッカーン!って爆発するイメージないか?

博士、それはちょっと安直すぎます…。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。