如何ssh到docker-machine VirtualBox实例?

问题描述 投票:74回答:6

docker-machine version 0.2.0 docker version 1.6.2

我正在使用docker-machine to create a machine using VirtualBox。一切正常,但我想ssh到机器本身,我没有找到如何做到这一点的说明。我可以连接到ssh端口:

ssh $(docker-machine ip dev)

但我不知道要使用哪个用户名/密码/身份文件。

docker docker-machine
6个回答
113
投票

您只需运行即可登录docker-machine主机

docker-machine ssh default

(在这里使用“默认”主机)

身份文件应存储在~/.docker/machine/machines下。如果要登录容器(而不是主机),请使用user2915097建议的docker exec


64
投票

如果你真的需要通过ssh这样做,这与docker 1.8.2一起使用

init docker:

eval "$(docker-machine env default)"

从默认的docker机器获取IP:

docker-machine ip default

这打印出这样的东西:192.168.99.100

ssh [email protected]

密码是tcuser但您也可以使用身份文件,请参阅其他答案


25
投票

最后,我找到了答案:

我在Windows上使用Docker Toolbox(Docker Machine)。

如果我docker-machine -D ssh default,我发现SSH参数应该是:

主持人:localhost 港口:51701 用户:docker 密钥:.docker \ machine \ machines \ default \ id_rsa

当我改变我的Putty / MobaXterm设置以匹配时,我可以通过SSH进入容器。


8
投票

对于那里的黑客,这里有一个脚本,它将进入“活动”的docker-machine。这也为您提供了ssh_key,ssh_port和ssh_user的值,使得可以在localhost和VM之间执行rsync之类的操作。

#!/bin/bash
docker_machine_name=$(docker-machine active)
docker_ssh_user=$(docker-machine inspect $docker_machine_name --format={{.Driver.SSHUser}})
docker_ssh_key=$(docker-machine inspect $docker_machine_name --format={{.Driver.SSHKeyPath}})
docker_ssh_port=$(docker-machine inspect $docker_machine_name --format={{.Driver.SSHPort}})

ssh -i $docker_ssh_key -p $docker_ssh_port $docker_ssh_user@localhost

你可以将它复制并粘贴到你的终端,换行,它就可以了。或者,将脚本转换为函数,并将其作为参数提供给它。


5
投票

如果由于某种原因你宁愿使用ssh命令而不是docker-machine ssh,你可以做

ssh `docker-machine ip machine_name` -ldocker -i ~/.docker/machine/machines/machine_name/id_rsa

2
投票

对于mac OX,机器及其键位于此处(确保您有钥匙,如下所示:

~/project/dev/docker_notes za$ ls /Users/za/.docker/machine/machines/default/
.DS_Store        ca.pem           config.json      disk.vmdk        id_rsa.pub       server-key.pem
boot2docker.iso  cert.pem         default/         id_rsa           key.pem          server.pem

1)列出可用的vms。

> ~/project/dev/docker_notes za$ docker-machine ls
>     NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
>     default   -        virtualbox   Running   tcp://192.168.99.100:2376           v1.11.0

在我的例子中,机器的名称是默认的。所以就

~/project/dev/docker_notes za$ docker-machine ssh default


                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.11.0, build HEAD : 32ee7e9 - Wed Apr 13 20:06:49 UTC 2016
Docker version 1.11.0, build 4dc5990
docker@default:~$ vi 
.ash_history  .ashrc        .docker/      .local/       .profile      .ssh/         log.log
docker@default:~$ ls
log.log

如您所见,我能够进入docker-machine / instance。

docker@default:~$ uname -a
Linux default 4.1.19-boot2docker #1 SMP Thu Apr 7 02:41:05 UTC 2016 x86_64 GNU/Linux

你也可以点击这个> howto - docker

© www.soinside.com 2019 - 2024. All rights reserved.