Docker Machine 概要

Docker Machine を使うと、以下の操作ができます。

  • Mac や Windows 上に Docker をインストール・実行
  • 複数のリモート Docker ホストを構築・管理
  • Swarm クラスタの構築(プロビジョン)

Docker Machine とは何ですか?

Docker Machine は仮想マシン上に Docker Engine をインストールするツールであり、 docker-machine コマンドを使ってホストを管理します。Machine を使えば、自分のローカルの Mac や Windows 上に Docker ホストを作れるだけでなく、あなたの会社のネットワーク上や、データセンターや、AWS や Digital Ocean のようなクラウド・プロバイダ上でも作れます。

docker-machine コマンドで、管理ホストの起動(start)、調査(inspect)、停止(stop)、再起動(restart)ができます。他にも Docker クライアントとデーモンの更新や、Docker クライアントが対象のホストへ接続できるような設定もできます。

Machine のコマンドライン上で管理対象のホストを参照するように指定すると、 docker コマンドが対象ホストを直接管理します。例えば、 docker-machine env default を実行すると、操作対象のホストは default という名前のホストにするため、画面上に env コマンドの指示が表示されます。それを使ってセットアップした後は、 docker psdocker run hello-world コマンドなど、指定したホスト上で直接処理できます。

なぜ使うべきですか?

Mac や Windows 上では、Docker Machine を使うのが Docker を実行する唯一の方法です。そして、様々な Linux で動作するリモート Docker ホストを複数プロビジョンするのにも、ベストの方法です。

Docker Machine は主に2つの使い方があります。

  • Mac や Windows 上で Docker を実行したい

(ToDo: イメージの追加)

主に Mac や Windows をノート PC 上で動かす場合は、「Dockerを実行」するために(つまり Docker Engine を動かすために) Docker Machine をローカルにインストールする必要があります。Mac や Windows 環境上で Docker Machine を使えば、ローカルに Docker Engine が動く仮想マシンをプロビジョニングし、そこに接続できるので、 docker コマンドが実行可能になります。

  • リモート・システム上に Docker ホストをプロビジョンしたい

(ToDo: イメージの追加)

Docker Engine は Linux システム上でネイティブに動きます。主な利用環境が Linux であれば、 docker コマンドを実行したい場合に必要になるのは Docker Engine のダウンロードとインストールです。それだけでなく、ネットワーク上で複数の Docker ホストを効率的にプロビジョン(訳者注:自動的な環境構築)したい場合、それがクラウドでも、ローカル環境でも実現したいのであれば、Docker Machine が必要になるでしょう。

Docker Machine をインストールしたら、たとえ環境が Mac ・ Windows ・ Linux であろうとも docker-machine コマンドを使って多くの Docker ホストのプロビジョンと管理ができます。Docker Machine は自動的にホストを作成し、そこに Docker Engine をインストールし、 docker クライアントの設定を行います。管理対象の各ホスト(「 マシン 」)が Docker ホストと設定済みのクライアントを結び付けます。

Docker Engine と Docker Machine の違いは何ですか?

一般的に「Docker」と呼ばれるのは Docker Engine を意味しています。Docker デーモンはクライアント・サーバ型アプリケーションです。デーモンは特定の REST API インターフェースとコマンド・ライン・インターフェース(CLI)でデーモンと通信します(REST API ラッパーを経由します)。Docker エンジンは CLI からの docker コマンドを受け付けます。 docker run <イメージ名>docker ps でのコンテナ実行や、 docker images でイメージの一覧などを処理します。

Docker Engine

Docker Machine は Docker ホスト(Docker Engine がホスト上で動いている環境)のプロビジョニングと管理をするためのツールです。一般的には Docker Machine を自分のローカルシステム上にインストールします。Docker Machine とは docker-machine というコマンド・ラインのクライアントと docker という Docker Engine のクライアントです。Docker Machine を使えば仮想システム上に Docker Engine をインストールできます。仮想システムとはローカル(Machine を使い、Mac または Windows 上の VirtualBox に Docker Engine をインストール、実行します)でも、リモート(Machine を使い、クラウド・プロバイダ上に Docker をプロビジョン)でも構いません。Docker に対応したホストが何であろうとも、常に 「 マシン 」として管理できるのです(訳者注:Docker Machine の管理対象のホストは、ローカルでもクラウド上でも「マシン」という概念で抽象化できる、という意味)。