How do I SSH into the boot2docker host vm that the

2019-01-21 06:36发布

I'm on OSX and I'd like to be able to SSH into the host vm in order to:

  1. Get access to a native docker environment. This facilitates understanding and debugging port forwarding issues.
  2. Vagrant rsync seems to leave a lot of unused synced directories that's eating up disk space that I'd like to recover.

To be clear, this question is NOT about ssh:ing into the docker containers that the Vagrant provider creates, but into the intermediate boot2docker host vm that Vagrant creates.

I know that a workaround is to not use the default boot2docker as the host vm (as explained in the answer here), but that's not what this question is about.

6条回答
干净又极端
2楼-- · 2019-01-21 07:11

Oct 2015: Boot2docker is deprecated in favor of docker-machine. To login:

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

$ docker-machine ssh default
查看更多
再贱就再见
3楼-- · 2019-01-21 07:13

For vagrant host machines with vagrant password:

ssh -p 2222 vagrant@localhost

Otherwise with tcuser password:

ssh -p 2222 docker@localhost

Here is more information on why this works.

查看更多
欢心
4楼-- · 2019-01-21 07:14

You can use SSH directly:

ssh docker@$(boot2docker ip)

(password: tcuser, see https://github.com/boot2docker/boot2docker#ssh-into-vm)


And you can also copy/paste your public key to the boot2docker machine, so you don't need to type the password every time:

cat ~/.ssh/id_rsa.pub | ssh docker@$(boot2docker ip) 'cat - >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys'
查看更多
对你真心纯属浪费
5楼-- · 2019-01-21 07:19

You can also forgo using boot2docker's ssh function and do it "manually" like so:

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

The arguments to -p is typically port 2022 but above shows how you can programmatically determine this if you want.

查看更多
贪生不怕死
6楼-- · 2019-01-21 07:23

Vagrant's boot2docker keeps boot2docker's ssh username and password.

SSH into VM

$ boot2docker ssh

Boot2Docker auto logs in using the generated SSH key, but if you want to SSH into the machine manually (or you're not using a boot2docker managed VM), the credentials are:

user: docker
pass: tcuser

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

The port is forwarded from the local port 2022 by default. You can verify this:

$ 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

And then login:

$ ssh docker@localhost -p 2022
docker@localhost's password: tcuser
                        ##        .
                  ## ## ##       ==
               ## ## ## ##      ===
           /""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
           \______ o          __/
             \    \        __/
              \____\______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker: 0.8.0
docker@boot2docker:~$ 
查看更多
Anthone
7楼-- · 2019-01-21 07:32

You can ssh into docker host with vagrant ssh docker-host-id but first you need to know the docker-host-id.
You can get a list of all active Vagrant environments with vagrant global-status command.
To get the docker-host id you can filter with grep:

vagrant global-status | grep docker-host

you'll obtain an output similar to:

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

copy the first column id, and then ssh into docker-host:

vagrant ssh 68f58d0

vagrant global status docs

查看更多
登录 后发表回答