Docker Machine をクラウド・プロバイダで使う

Docker Machine は様々なクラウド・プラットフォームに対応したプラグインを扱えます。このプラグインに対応したドライバを使えば、Docker Machine でクラウド・ホストを自動作成します。そして、作成するホスト上に Docker Engine も自動インストールできます。

必要になるのは Docker Machine のインストール・実行と、利用するクラウド・プロバイダ上でのアカウント作成です。

次にアカウント証明書、セキュリティ証明書など、 docker-machine create コマンドのオプション用フラグで必要なものを確認します。例えば、 Digital Ocean のアクセス・トークンを指定するには --digitalocean-access_token フラグを使います。以降のページでは Digital Ocean と AWS の設定例を見ていきます。

サンプル

Digital Ocean

次のコマンドは Digital Ocean 上に「docker-sandbox」という名前のドロップレット(クラウド・ホスト)を作成します。

$ docker-machine create --driver digitalocean --digitalocean-access-token xxxxx docker-sandbox

Machine を使い、Digital Ocean 上のホストで更なる操作をするには Digital Ocean サンプル をご覧ください。

Amazon Web Services (AWS)

次のコマンドは AWS EC2 上に「aws-sandbox」という名前のドロップレット(クラウド・ホスト)を作成します。

$ docker-machine create --driver amazonec2 --amazonec2-access-key AKI******* --amazonec2-secret-key 8T93C*******  aws-sandbox

Machine を使い、AWS 上の Docker 対応インスタンスで更なる操作をするには Amazon Web Services (AWS) サンプル をご覧ください。

docker-machine create コマンド

docker-machine create コマンドの実行時、いくつか最小限の指定が必要となります。

  • --driver で、マシンを作成するプロバイダを明示します( VirtualBox 、 Digital Ocean 、 AWS 、等)。

  • クラウド・サービスを使う場合は、(クラウド・プロバイダの)アカウント証明書やセキュリティ証明書の指定。

  • <マシン名> で作成したいホスト名。

扱いやすいように、 docker-machine でサーバ作成時に一般的なオプションがデフォルトで適用されます。しかし、これらのデフォルト値はフラグを使って上書きできます(例: --digitalocean-image )。そのため、クラウド・サーバに多くのメモリや CPU を割り当てたい場合には便利でしょう(デフォルトの docker-machine は小さなサーバを作成します)。

デフォルトの値、あるいは利用可能なフラグや設定を全て確認したい場合は、コマンドラインで docker-machine create -h を使います。他にも、Machine コマンドライン・リファレンスcreate コマンドや、Machine ドライバ・リファレンスの ドライバのオプションと、デフォルト OS をご覧ください。

クラウド・プロバイダ向けのドライバ

Docker Machine をインストーしたら、様々なクラウド・プロバイダに対応したドライバ(Amazon Web Services 、 Digital Ocean 、 Microsoft Azure 等)と、ローカルのプロバイダ(Oracle VirtualBox 、VMware Fusion 、Microsoft Hyper-V)が利用可能になります。

各ドライバの詳細は Docker Machine ドライバ・リファレンス から、必要なフラグや設定オプション(プロバイダごとにかなり違います)をご確認ください。

サード・パーティのドライバ・プラグイン

サード・パーティの貢献者による様々なクラウド・プラットフォームに対応した Docker Machine プラグインがあります。これらのプラグイン利用にあたっては、利用者の皆さん自身でリスクを取ってください。Docker によって直接メンテナンスされているものではありません。

使うには、GItHub の docker/machine リポジトリ上の 利用可能なドライバ・プラグイン をご覧ください。

ドライバを使わずにホストを追加

Docker の場所を指定したら、ドライバがないホストの追加が可能です。既存のホストに関するマシン名を指定することにより、Docker コマンド使用時に毎回オプションを指定する必要がなくなります。

$ docker-machine create --url=tcp://50.134.234.20:2376 custombox
$ docker-machine ls
NAME        ACTIVE   DRIVER    STATE     URL
custombox   *        none      Running   tcp://50.134.234.20:2376

Machine で Docker Swarm クラスタの自動構築

Docker Machine を使えば Docker Swarm クラスタのプロビジョンもできます。どのドライバを使っても TLS で安全にします。

次はどこへ行きますか

参考

Use Docker Machine to provision hosts on cloud providers

https://docs.docker.com/machine/get-started-cloud/