LoginSignup
8
8

More than 5 years have passed since last update.

Docker のソースの構成についてのメモ

Last updated at Posted at 2015-01-11

Go 言語が読めるようになってきたので、早速 Docker のソース(docker/docker)を読んで行こうかなと。上モノでピンと来ていないところを確認しつつ、早めにカーネルの方で対応する機能のコードを、あわせて読みたい。

そこで、まずはトップディレクトリを、とりあえず分類してみる。

分類はザッと見で以下のよう。間違いがあるかも知れないので、読みながら追っかけ修正する。

今日(Jan 11 2015)時点で、バージョンは 1.4.1。

クライアントサイドのコード

Docker クライアントのコマンドと、ライブラリ。

  • api/ クライアント側の Web API(client)
  • runconfig/ runサブコマンドの設定かな? コンテナや、コンテナを管理するホストの情報を保持する構造のようだ
  • opts/ 各種サブコマンドのオプションを validate したりする
  • nat/ NAT 構成指示の文字列を操作する(これは engine かな?)

Docker Engine 本体のコード

Docker 1.0 以降では、Docker 本体に「Docker Engine」の名前がつけられている。「Docker」ブランドのコアとしての「Docker Engine」ということなんだろうな。 ∥ いまさら聞けないDocker入門(2):ついに1.0がリリース! Dockerのインストールと主なコマンドの使い方 (1/3) - @IT

hack/make/cross を見ると分かるように、現状でサーバになれるのは「linux/amd64」のみである。

  • engine/ Docker のコアだと言う。ストレージ・エンジンとは関係が無さそう。
    • main.mainDaemon() から engine.New() している
    • サーバの機能そのもののように見える。builtins.Register(eng)registry.NewService(daemonCfg.InsecureRegistries).Install(eng) などをしている。気になる
  • builder/ Dockerfile のパーサ。実行もか?
  • daemon/ イメージ操作とコンテナ管理
  • builtins/ ?(たぶん engine)
  • events/ engine 内で用いられる Event 型のようだ
  • graph/ versioned な差分ファイルシステムのグラフ構造を保持する
  • image/ graph を操作するコードに見える。なぜ graph と別になっている?
  • volumes/ コンテナに bind 等される「volume」のことだろう
  • links/ 多分、--link のコンテナ間リンク機能
  • registry/ イメージのレジストリに関するコード

クライアント, Engine 共通のコード

  • dockerversion/ バージョン情報。docker/ に入れたいが、dockerinit/ が要するのでこの階層に置くとある
  • docker/ バイナリのフロント。Docker は、cli クライアントとデーモンとがワンバイナリである
  • vendor/ たとえば github.com/docker/libtrust であれば vendor/src/github.com/docker/libtrust/ に入る
  • trust/ これ(docker/libtrust)のフロントかな? 証明書や署名の validattion 等を扱う模様
  • utils/ いろいろ
  • pkg/ 汎用の(Docker に依存しない)ライブラリ

その他

それ以外はボチボチ見る。

  • ビルド関連
    • hack/ もしくは project/ ビルドと配布に関するリソース
    • bundles/ バイナリの出力先
  • dockerinit/ pkg/reexec/ を使っている。コンテナ用の init(8) か? 後で見る
  • integration-cli/ 統合テストか?
  • docs/ 文書。最新版の出力は Docker Documentation にある
    • sources/ 文書本体
  • contrib/ もろもろ。あまりメンテされていないかも知れない?
  • integration/ 旧統合テスト。deprecated 予定
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8