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-machineenvdefault を実行したら、操作対象のホストは default という名前のホストにするため、画面上に env コマンドの指示が表示されます。これを使ってセットアップしたあとは、 dockerpsdockerrunhello-world コマンドなど、指定したホスト上で直接処理できます。

Docker Machine は、Docker v1.12 以前は Mac および Windows 上において Docker を実行する唯一の方法 でした。 Docker v1.12 のベータ版として始まったプログラムが、Docker Desktop for MacDocker Desktop for Windows というネイティブ・アプリとして利用可能になり、これが最新のデスクトップやノート PC に対しての最適な選択肢となりました。 現在ではこれらの新しいアプリケーションの利用をお勧めしています。 Docker Desktop for Mac や Docker Desktop for Windows のインストーラには、Docker Machine や Docker Compose が含まれています。

どこからはじめたらよいのか不明であれば、概要説明とセットアップ を確認してください。 このガイドでは Docker の全般的なチュートリアルを示しています。

なぜ使うべきですか?

Docker Machine を利用すると、さまざまな種類の Linux に対して、リモート Docker ホストを複数プロビジョングできます。

さらに Docker Machine は上で述べているように、Mac や Windows の古いシステムにおいて Docker を起動させることができます。

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

  • Mac や Windows のデスクトップシステムが古いけど Docker を実行したい

    Mac と Windows 上の Docker Machine

    主に作業をしているマシンが Mac や Windows の古いデスクトップやノート PC であって、Docker Desktop for MacDocker Desktop for Windows という新たなアプリを利用する前提条件を満たしていない場合、Docker Engine をローカルで実行するには Docker Machine が必要になります。Docker Toolbox のインストーラを通じて Mac や Windows に Docker Machine をインストールすると、Docker Engine を利用するローカルの仮想マシンがプロビジョニングされます。 これに対して接続を行い docker コマンドを実行します。

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

    複数システムをプロビジョニングする Docker Machine

    Docker Engine は Linux システム上でネイティブに動作します。 主に利用するシステムが Linux であって docker コマンドを利用したいのであれば、やるべきことは、単に Docker Engine をダウンロードしてインストールするだけです。 ただしネットワーク上に複数の Docker ホストを効率よくプロビジョニングしたい場合は、クラウド上とローカル上は問わず Docker Machine が必要になります。

    ふだん利用するシステムが Mac、Windows、Linux のどれであっても、Docker Machine をインストールして docker-machine コマンドを使えば、いくらでも Docker ホストのプロビジョニングと管理が可能になります。 Docker Machine からはホストが自動生成され、そのホスト内に Docker Engine がインストールされます。 そして docker クライアントが設定されます。 こうして管理される各ホスト(「マシン」)が、Docker ホストと設定済みクライアントを結びつけます。

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

「Docker」と言えば、普通は Docker Engine のことを意味します。 これは Docker デーモンによって構成されるクライアント・サーバ・アプリケーションであり、デーモンとのやりとりを行うためのインターフェースを規定する REST API であり、デーモンとの対話を(REST API ラッパーを通じて)行うコマンドライン・インターフェース(CLI)をすべて意味しています。 Docker Engine は CLI から docker コマンド、たとえば dockerrun<イメージ名> を受けつけます。 あるいは dockerps によって実行中コンテナの一覧を表示し、dockerimagels によってイメージ一覧を表示するといった具合です。

Docker Engine

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

Docker Machine

次はどこへ行きますか?

参考

Docker Machine Overview

https://docs.docker.com/machine/overview/