Hacker News
Dockerは変だ
ソフトウェア初登場 800ポイントコメント330件
この記事は、ある開発者がDockerの仕組みを学ぶために自作のコンテナ実行環境を作り始め、その中で見つけた「Dockerの不思議な点」をまとめたものです。
何が書かれているか
筆者は趣味で自分のコンテナ実行環境(コンテナランタイム)を作り始めました。そこで、Dockerにはいくつか意外な仕組みがあることに気づきました。コンテナは「特別な制限をかけられた普通のプロセス」であり、イメージは「フォルダ」であることなどを説明しています。
コンテナとは?
コンテナは、アプリを箱に入れるように、動きに必要なものをまとめて動かす仕組みです。仮想マシン(VM)とは違い、ホストのOSカーネルを直接使います。そのため、コンテナは軽く速く動きます。
押さえておきたいポイント
- コンテナは、Linuxの5つのカーネル機能を組み合わせて作られている
- namespaces(名前空間)は、見える範囲を隠す役割をもつ
- cgroups(コントロールグループ)は、使えるリソース量を制限する
- イメージは、コンテナのルートディレクトリとして使われるフォルダである
Dockerの不思議な点
なぜ大事なのか
Dockerは多くの開発者が毎日使う道具です。その中身を知ると、トラブルの原因を見つけやすくなり、セキュリティも考えやすくなります。筆者の言うように、自分で作ってみることは、ツールを深く理解する良い方法です。
用語解説
- Docker
- アプリをコンテナという箱に入れて動かすためのソフトウェアです。
- runc
- Dockerが使うコンテナ実行用のプログラムです。
- namespaces
- プロセスから見える範囲を分ける Linux の仕組みです。
- cgroups
- プロセスが使える CPU やメモリなどの量を制限する Linux の仕組みです。
- Go
- Google が作ったプログラミング言語です。