汎用(generic)ドライバ

既存の仮想マシン/ホストを、SSH 経由で Docker Machine が扱えるマシンにします。

これが役立つのは、Docker Machine のプロバイダがサポートされていない場合や、既存の Docker ホスト環境を Docker Machine で管理できるよう移行する場合です。

作成時、ドライバは以下の処理を行います。

  • ホスト上で docker が動いていなければ、自動的にインストールを行う。
  • ホスト上のパッケージを更新します( apt-get update yum update ... )
  • docker デーモンを安全にする証明書を生成する。
  • docker デーモンを再起動するため、実行中のコンテナは全て停止される。
  • ホスト名がマシン名に対応します。

マシン・インスタンスを作成するには、 --driver generic を指定します。また、ホストの IP アドレスまたは DNS 名と、ホストに接続できるようにするための SSH 秘密鍵も指定します。

$ docker-machine create \
  --driver generic \
  --generic-ip-address=203.0.113.81 \
  --generic-ssh-key=~/.ssh/id_rsa \
  vm

パスワードで保護された SSH 鍵

SSH 認証情報の指定( --generic-ssh-key フラグを使う )がなければ、 SSH エージェントは(実行中であれば)訊ねます。つまり、パスワードで保護された SSH 鍵を簡単に使えるようにします。

ただしサポートされているのは、外部の SSH クライアント、ここでは ssh バイナリが実行できるデフォルトの挙動が扱える場合のみです。ネイティブ・クライアントを使う場合( --native-ssh )は、まだ SSH エージェントの利用をサポートしていませんのでご注意ください。

$ docker-machine create \
  --driver generic \
  --generic-ip-address=203.0.113.81 \
  other

sudo 権限

ホストに SSH 接続できるユーザを指定するには --generic-ssh-user フラグを使います。この時、指定したユーザはパスワード入力なしに sudo を実行する権限が必要です。もしそのようになっていなければ、 sudoers ファイルを編集し、そのユーザに NOPASSWD としての調整が必要になります。詳しくは ドキュメント をご覧ください。

オプション

  • --generic-engine-port : Docker デーモンが使うポート番号(メモ:このフラグは boot2docker では機能しません)
  • --generic-ip-address : 必須 ホストの IP アドレス
  • --generic-ssh-key : SSH ユーザのプライベート鍵のパス
  • --generic-ssh-user : 接続に使う SSH ユーザ名
  • --generic-ssh-port : SSH に使うポート番号

注釈

Docker Machine がサポートしているベース・オペレーティング・システムを使う必要があります。

利用可能な環境変数とデフォルト値は以下の通りです。

コマンドライン・オプション 環境変数 デフォルト値
--generic-engine-port GENERIC_ENGINE_PORT 2376
--generic-ip-address GENERIC_IP_ADDRESS
--generic-ssh-key GENERIC_SSH_KEY ssh-agent に従う )
--generic-ssh-user GENERIC_SSH_USER root
--generic-ssh-port GENERIC_SSH_PORT 22