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 ps
や docker run hello-world
コマンドなど、指定したホスト上で直接処理できます。
Docker Machine は、Docker v1.12 以前は Mac および Windows 上において Docker を実行する唯一の方法 でした。 Docker v1.12 のベータ版として始まったプログラムが、Docker Desktop for Mac と Docker 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 の古いデスクトップやノート PC であって、Docker Desktop for Mac や Docker Desktop for Windows という新たなアプリを利用する前提条件を満たしていない場合、Docker Engine をローカルで実行するには Docker Machine が必要になります。 Docker Toolbox のインストーラを通じて Mac や Windows に Docker Machine をインストールすると、Docker Engine を利用するローカルの仮想マシンがプロビジョニングされます。 これに対して接続を行い
docker
コマンドを実行します。
リモート・システム上に Docker ホストをプロビジョンしたい
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
コマンド、たとえば docker run <イメージ名>
を受けつけます。
あるいは docker ps
によって実行中コンテナの一覧を表示し、docker image ls
によってイメージ一覧を表示するといった具合です。
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 のインストール
- machine を ローカルの VirtualBox を使ったシステム にインストール
- 複数の machine を クラウド・プロバイダ にインストール
- Docker Machine で Swarm クラスタ構築
- Machine の概念に対する理解とヘルプを得る
- Docker Machine ドライバ・リファレンス
- Docker Machine サブコマンド・リファレンス
- Boot2Docker から Docker Machine への移行
参考
- Docker Machine Overview
- https://docs.docker.com/machine/overview/