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 を実行したい
Docker Machine

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

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

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 Engine は 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 の管理対象のホストは、ローカルでもクラウド上でも「マシン」という概念で抽象化できる、という意味です)。

Docker Machine