LoginSignup
64
60

More than 5 years have passed since last update.

Docker for Macでおこなっていることのまとめ(メモ)

Last updated at Posted at 2017-05-30

Docker for Macでおこなっていることのまとめ

※随時更新

今回は、最近Docker for Macを使い初めて以前のDocker ToolBoxを使った構築とどう違うのか整理したいと思い、Dockerの仕組みも含めてまとめてみた。

Dockerのアーキテクチャ

Dockerの構造について添付しておきます。
docker.png

Docker for Macでインストールしているもの

Docker for Macでは、Docker Engine、Docker Compose、Docker Machineがインストールされます。では、それぞれがどのようなものなのかを説明していきます。

Docker Engine

Docker Engineとは、3つの主な構成要素を持つクライアント・サーバ型アプリケーションです。

1. Docker デーモン

Dockerデーモンとは、Dockerイメージ、Dockerコンテナ、Dockerネットワーク、DockerボリュームなどDockerの構成要素の管理者的な位置づけです。そのため、Dockerオブジェクトを作成・管理します。Dockerオブジェクトには、イメージ、コンテナ、ネットワーク、データ・ボリュームなどが含まれます。

2. REST API

インターフェースを規定する REST API は、プログラムがデーモンと通信に使うものであり、何をするか指示するものです

3. コマンドライン・インターフェース(CLI)クライアント

アーキテクチャの図でいうクライアントのことで、ユーザがDocker(Docker デーモン)とやりとりするためのものです。CLI は Docker REST API のスクリプトもしくは直接 CLI コマンドを使い、Docker デーモンを制御または対話します

Docker Compose

Docker Compose とは、複数のコンテナを使う Docker アプリケーションを、定義・実行するツールです。

Docker Composeを使用するための3つのステップ

  1. アプリケーションの環境を Dockerfile ファイルで定義する
  2. アプリケーションを構成する各サービスをdocker-compose.ymlファイルで定義します
  3. 最後に、docker-compose upを実行することで定義したアプリケーション全部が起動・実行される

Docker Machine

Docker Machine は仮想マシン上に Docker Engine をインストールするツールであり、 docker-machineコマンドを使ってホストを管理します。
また、docker-machineコマンドで、管理ホスト(Dockerホスト)の起動(start)、調査(inspect)、停止(stop)、再起動(restart)ができます。

どのような時に使用するのか?

  1. Mac や Windows 上で Docker を実行したい
  2. リモート・システム上に Docker ホストをプロビジョンしたい

※ Docker for Macからは不要に?
Dockerは、Linuxカーネルの機能である「名前空間、コントロール・グループ、ユニオン・ファイル・システム」を使用しています。そのため、Linux環境でないと動きません。
しかし、Docker for Macでは、Macにデフォルトで入っている仮想化ツール「HyperKit」を使ってMacで仮想マシンを立ち上げ、Linuxを起動しています。それによって、Mac上にDockerホストを作成しています。
Docker for Macが出る前は、Docker ToolboxをインストールしてDocker Machineを使ってVM上にDockerホストを作していました。それが、Docker for Macになることで不要となったのか?ここは、ちょっと確証がないです...

Dockerの処理内容・流れ

docker runコマンドでコンテナ起動した際の処理内容・流れ

  1. イメージ取得
    まずローカルホストにイメージがないか確認して、なければDocker Hubからダウンロードする
  2. 新しいコンテナ作成
    Dockerがイメージを入手したあと、それを使ってコンテナを作成する
  3. ファイルシステムを割り当て、読み書き可能なレイヤをマウント
    コンテナを新しいファイルシステム上に作成し、読み込み可能な(イメージの)レイヤをイメージに追加する
  4. ネットワークとブリッジインターフェースの割り当て
    Docker コンテナがローカルホストと通信できるようにするため、ネットワーク・インターフェースを作成する
  5. IP アドレスを設定
    プールされている範囲内で利用可能な IP アドレスを探して(コンテナに)追加する
  6. 指定したプロセスを実行 アプリケーションを実行し、そして
  7. アプリケーションの出力を収集・表示
    コンテナに接続し、アプリケーションを実行したことによる標準入力・標準出力・エラーを記録・表示する

※ ブリッジインターフェース
複数のインタフェースを1つの仮想インタフェースに収容し、収容したインタフェース間でブリッジング(2つのネットワークを1つの大きなネットワークにすること)を行う機能です。
※ ネットワーク・インターフェース
プロトコルで実現/実装されている機能を呼び出すための仕様のこと
※ プール
必要なくなった資源を回収してすぐに再利用できるように一時的に貯めておく仕組みや保管領域のこと

参考

http://docs.docker.jp/engine/understanding-docker.html
http://www.memotansu.jp/2016/08/docker/377/

64
60
2

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
64
60