Motin
Motin

Reputation: 5063

How do I SSH into the boot2docker host vm that the Vagrant 1.6 Docker Provider sets up?

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.

Upvotes: 35

Views: 52282

Answers (6)

John-Paul Cunliffe
John-Paul Cunliffe

Reputation: 53

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.

Upvotes: 2

Jim Soho
Jim Soho

Reputation: 2048

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

Upvotes: 15

Vojtech Vitek - golang.cz
Vojtech Vitek - golang.cz

Reputation: 27744

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'

Upvotes: 3

David256
David256

Reputation: 1036

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:~$ 

Upvotes: 102

slm
slm

Reputation: 16416

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.

Upvotes: 7

alfonsodev
alfonsodev

Reputation: 2754

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

Upvotes: 11

Related Questions