ssh

SSH でマシンにログインするか、コマンドを実行します。

ログインするには、 docker-machinesshマシン名 を実行するだけです。

$ docker-machine ssh dev ## .## ## ## ==## ## ## ## === /""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~ \______ o __/ \ \  __/ \____\______/ _ _ ____ _ _||__ ___ ___ ||_|___ \ __|| ___ ___|| _____ _ __|'_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|||_)|(_)|(_)||_ / __/ (_||(_)|(__| < __/ ||_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|Boot2Docker version 1.4.0, build master : 69cf398 - Fri Dec 1201:39:42 UTC 2014docker@boot2docker:~$ ls /
Users/ dev/ home/ lib/ mnt/ proc/ run/ sys/ usr/
bin/ etc/ init linuxrc opt/ root/ sbin/ tmp var/

docker-machinessh コマンドは通常の ssh プログラムが動作するように、リモートで直接実行するコマンドを指定することも可能です。

$ docker-machine ssh dev free total used free shared buffers
Mem: 1023556183136840420030920-/+ buffers: 152216871340Swap: 121203601212036

コマンドに対するフラグも、同様に動作します。

$ docker-machine ssh dev df -h
Filesystem Size Used Available Use% Mounted on
rootfs 899.6M 85.9M 813.7M 10% /
tmpfs 899.6M 85.9M 813.7M 10% /
tmpfs 499.8M 0499.8M 0% /dev/shm
/dev/sda1 18.2G 58.2M 17.2G 0% /mnt/sda1
cgroup 499.8M 0499.8M 0% /sys/fs/cgroup
/dev/sda1 18.2G 58.2M 17.2G 0%
/mnt/sda1/var/lib/docker/aufs

「外部の」SSH タイプを使う場合の詳細については、次のセクションで説明します。 ssh バイナリを実行するコマンドには( Docker Machine によって作成されるコマンドと衝突しない限り)追加オプションを設定できます。例えば、次のコマンドは default マシンから自分のホスト・コンピュータ上の localhost に対して、ポート 8080 に転送するコマンドです。

$ docker-machine ssh default -L 8080:localhost:8080

異なる種類の SSH

Docker Machine が呼び出される時、伝統的な ssh バイナリがローカルにあるかどうか確認し、SSH コマンドを使う必要があれば、これを使おうとします。使う場面とは、create 時のような内部処理か、利用者が必要な時に明示するかどうかに拘わりません。外部の ssh バイナリがローカルに存在しなければ、Go 言語内蔵の crypto/ssh を使おうとします。これは伝統的な UNIX ツールが利用できない環境で便利になるでしょう。例えば、Windows 上で Docker Machine を 使う時に、 msysgit がインストールされていなくても使えます。

多くの場合、実装の詳細について考慮する必要はありません。Docker Machine は難しい設定をしなくても利用できます。しかし、Go ネイティブ・バージョンを敢えて使おうとする場合は、グローバルなコマンドライン上のフラグ、または、環境変数の指定が必要です。

$ docker-machine --native-ssh ssh dev

2つの手法は様々なパターンを伴いますので、何らかの問題や一貫性が無い場合があれば、ご報告ください。