web-dev-qa-db-ja.com

Vagrant 1.6 Docker Providerがセットアップするboot2dockerホストvmにSSHで接続するにはどうすればよいですか?

OSXを使用していますが、ホストvmにSSHで接続して、次のことができるようにしたいと思います。

  1. ネイティブDocker環境にアクセスします。これにより、ポート転送の問題の理解とデバッグが容易になります。
  2. Vagrant rsyncにより、未使用の同期されたディレクトリが多く残っているため、回復したいディスク領域を消費しているようです。

明確にするために、この質問はVagrantプロバイダーが作成するdockerコンテナーではなく、Vagrantが作成する中間boot2dockerホストvmにsshすることに関するものです。

回避策は、デフォルトのboot2dockerをホストvmとして使用しないことです(答え here で説明されています)が、それはこの質問の目的ではありません。

35
Motin

Vagrantのboot2dockerは、boot2dockerのsshユーザー名とパスワードを保持します。

VMへのSSH

$ boot2docker ssh

Boot2Dockerは生成されたSSHキーを使用して自動ログインしますが、マシンに手動でSSHで接続する場合(またはboot2docker管理対象VMを使用しない場合)、資格情報は次のとおりです。

user: docker
pass: tcuser

https://github.com/boot2docker/boot2docker#ssh-into-vm

デフォルトでは、ポートはローカルポート2022から転送されます。これを確認できます:

$ VBoxManage list vms | grep docker
"docker-Host_default_1234567890000_1234" {3d66ecf6-4539-47ca-afd2-66f953cd9a3e}
$ VBoxManage showvminfo docker-Host_default_1234567890000_1234 | grep ssh
NIC 1 Rule(1):   name = ssh, protocol = tcp, Host ip = 127.0.0.1, Host port = 2022, guest ip = , guest port = 22

そしてログインします:

$ ssh docker@localhost -p 2022
docker@localhost's password: tcuser
                        ##        .
                  ## ## ##       ==
               ## ## ## ##      ===
           /""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
           \______ o          __/
             \    \        __/
              \____\______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker: 0.8.0
docker@boot2docker:~$ 
100
David256

2015年10月:Boot2dockerは廃止され、docker-machineが採用されました。ログインします:

$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM
default   *        virtualbox   Running   tcp://192.168.99.100:2376   

$ docker-machine ssh default
15
Jim Soho

vagrant ssh docker-Host-idを使用してdockerホストにsshできますが、最初にdocker-Host-idを知る必要があります。
vagrant global-statusコマンドですべてのアクティブなVagrant環境のリストを取得できます。
grepでフィルタリングできるdocker-Host IDを取得するには:

vagrant global-status | grep docker-Host

次のような出力が得られます。

68f58d0  default  virtualbox running   /Users/yourUser/.vagrant.d/data/docker-Host

最初の列IDをコピーしてから、sshをdocker-Hostにコピーします。

vagrant ssh 68f58d0

浮浪者のグローバルステータスドキュメント

11
alfonsodev

boot2dockerssh関数を使用するのをやめて、次のように「手動で」実行することもできます。

$ ssh \
-i $HOME/.ssh/id_boot2docker \
-p $(boot2docker config 2>&1 | awk '/SSHPort/ {print $3}') \
docker@localhost

-pへの引数は、通常ポート2022ですが、上記は必要に応じてプログラムでこれを決定する方法を示しています。

7
slm

SSHを直接使用できます:

ssh docker@$(boot2docker ip)

(パスワード:tcuser、 https://github.com/boot2docker/boot2docker#ssh-into-vm を参照)


また、公開鍵をboot2dockerマシンにコピー/貼り付けできるため、毎回パスワードを入力する必要がありません。

cat ~/.ssh/id_rsa.pub | ssh docker@$(boot2docker ip) 'cat - >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys'
2
Vojtech Vitek

vagrantパスワードを持つvagrant Hostマシンの場合:

ssh -p 2222 vagrant@localhost

それ以外の場合(tcuserパスワード:

ssh -p 2222 docker@localhost

ここ は、これが機能する理由の詳細です。

2