Docker Machine

Docker Machine は、Docker が初期に Docker ホストを作成・管理するために生み出したツールですが、Docker Desktop、Terraform、Kubernetes の成熟に伴い、その歴史的使命を終え、全面的に代替されました。

Docker Desktop はローカル開発環境において完全に代替Docker Machine を置き換え、実際の使用には適さなくなりました。

比較項目 Docker Machine Docker Desktop
製品の位置付け Docker ホスト作成・管理ツール ローカル Docker 一体型開発環境
主な用途 VM を作成し Docker Engine をインストール ローカルで直接 Docker を実行
代表的な使用時代 Docker 初期(1.x 〜 18.x) 現在の主流
macOS / Windows サポート 間接的(VirtualBox に依存) ネイティブサポート
追加の仮想化ソフトウェアが必要か 必要(VirtualBox / VMware) 不要(内蔵)
Docker Engine 管理 手動 / 半自動 全自動
使用の複雑さ 高 低
GUI の提供 否 である
Kubernetes サポート サポートなし オプションで内蔵
複数 Docker ホスト管理 サポート サポートなし(単一マシン向け)
本番環境への適合 不向き 不向き
公式メンテナンス状況 基本的に更新停止 継続的に活発
現在の推奨度 ❌ 非推奨 ✅ 強く推奨

概要

Docker Machine は、仮想ホストに Docker をインストールできるツールであり、docker-machine コマンドを使ってホストを管理することができます。

Docker Machine はすべての Docker ホストを集中管理することもでき、例えば 100 台のサーバーに素早く Docker をインストールできます。

Docker Machine が管理する仮想ホストは、ローカルマシン上のものでも、クラウドプロバイダー(例:Alibaba Cloud、Tencent Cloud、AWS、DigitalOcean)のものでも構いません。

docker-machine コマンドを使用すると、管理対象ホストの起動、確認、停止、再起動ができ、Docker クライアントとデーモンのアップグレード、さらに Docker クライアントとホスト間の通信設定も行えます。


インストール

Docker Machine をインストールする前に、Docker をインストールする必要があります。

Docker Machine は、Linux、macOS、Windows を含む複数のプラットフォームにインストールして使用できます。

Linux インストールコマンド

$ base=https://github.com/docker/machine/releases/download/v0.16.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
  sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&
  chmod +x /usr/local/bin/docker-machine

macOS インストールコマンド

$ base=https://github.com/docker/machine/releases/download/v0.16.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/usr/local/bin/docker-machine &&
  chmod +x /usr/local/bin/docker-machine

Windows インストールコマンド

Windows プラットフォームの場合は、次を使用できますGit BASH以下のコマンドを入力します:

$ base=https://github.com/docker/machine/releases/download/v0.16.0 &&
  mkdir -p "$HOME/bin" &&
  curl -L $base/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" &&
  chmod +x "$HOME/bin/docker-machine.exe"

インストールが成功したか確認する:

$ docker-machine version
docker-machine version 0.16.0, build 9371605

注意:各バージョンの更新ログにもインストール方法が記載されています:https://github.com/docker/machine/releases


使用方法

この章では、virtualbox を使って docker-machine の使用方法を紹介します。他のクラウドサービスプロバイダーでも操作は基本的に同じです。詳細は各プロバイダーのガイドドキュメントを参照してください。

1. 利用可能なマシンを一覧表示

現時点では、デフォルトの default 仮想マシンのみが存在することがわかります。

$ docker-machine ls

2. マシンを作成

test という名前のマシンを作成します。

$ docker-machine create --driver virtualbox test
  • --driver:マシン作成に使用するドライバータイプを指定します。ここでは virtualbox です。

3. マシンのIPを確認

$ docker-machine ip test

4. マシンを停止

$ docker-machine stop test

5. マシンを起動

$ docker-machine start test

6. マシンに入る

$ docker-machine ssh test

docker-machine コマンドパラメータの説明

  • docker-machine active:現在アクティブな Docker ホストを確認します。

    $ docker-machine ls
    
    NAME      ACTIVE   DRIVER         STATE     URL
    dev       -        virtualbox     Running   tcp://192.168.99.103:2376
    staging   *        digitalocean   Running   tcp://203.0.113.81:2376
    
    $ echo $DOCKER_HOST
    tcp://203.0.113.81:2376
    
    $ docker-machine active
    staging
  • config:現在アクティブな Docker ホストの接続情報を確認します。
  • create:Docker ホストを作成します
  • env:特定のホストへの接続に必要な環境変数を表示します
  • inspect:指定した Docker の詳細情報を JSON 形式で出力します
  • ip:指定した Docker ホストのアドレスを取得します
  • kill:指定した Docker ホストを直接強制終了します
  • ls:すべての管理ホストを一覧表示します
  • provision:指定したホストを再設定します
  • regenerate-certs:特定のホストの TLS 情報を再生成します
  • restart:指定したホストを再起動します
  • rm:特定の Docker ホストを削除します。対応する仮想マシンも削除されます
  • ssh:SSH でホストに接続し、コマンドを実行します
  • scp:Docker ホスト間、および Docker ホストとローカルホスト間で scp によりデータをリモートコピーします
  • mount:SSHFS を使用してコンピューターからディレクトリをマウントまたはアンマウントします
  • start:指定した Docker ホストを起動します。対象が仮想マシンの場合、その仮想マシンが起動されます
  • status:指定した Docker ホストの状態を取得します(Running、Paused、Saved、Stopped、Stopping、Starting、Error などを含む)
  • stop:指定した Docker ホストを停止します
  • upgrade:指定したホストの Docker バージョンを最新に更新します
  • url:指定した Docker ホストのリッスン URL を取得します
  • version:Docker Machine のバージョンまたはホストの Docker バージョンを表示します
  • help:ヘルプ情報を表示します
その他の拡張