87

docker-machine 版本 0.2.0 docker 版本 1.6.2

我正在使用docker-machine 创建使用 VirtualBox 的机器。一切正常,但我想 ssh 进入机器本身,但我没有找到有关如何执行此操作的说明。我可以连接到 ssh 端口:

ssh $(docker-machine ip dev)

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

4

8 回答 8

126

您可以通过运行登录到 docker-machine 主机

docker-machine ssh default

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

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

于 2015-05-19T16:29:49.193 回答
71

如果你真的需要通过ssh,这是使用 docker 1.8.2

初始化码头工人:

eval "$(docker-machine env default)"

从您的默认 docker 机器获取 IP:

docker-machine ip default

这会打印出这样的内容:192.168.99.100

ssh docker@192.168.99.100

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

于 2015-10-26T16:33:39.740 回答
25

最后,我找到了答案:

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

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

主机:localhost
端口:51701
用户: docker
密钥:.docker\machine\machines\default\id_rsa

当我将 Putty/MobaXterm 设置更改为匹配时,瞧,我可以 SSH 进入容器。

于 2015-09-12T23:25:59.103 回答
12

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

#!/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

您可以将其复制并粘贴到您的终端中,逐行复制,它将起作用。或者,将脚本变成一个函数,并将名称作为参数提供给它。

于 2016-03-16T06:04:42.733 回答
5

如果由于某种原因您宁愿使用sshcommand 而不是docker-machine ssh,您可以这样做

ssh `docker-machine ip machine_name` -ldocker -i ~/.docker/machine/machines/machine_name/id_rsa
于 2016-03-05T17:22:48.130 回答
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)列出可用的虚拟机。

> ~/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

如您所见,我可以通过 ssh 进入 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

于 2016-04-17T18:45:03.960 回答
0

您可以使用终端登录时使用的普通语法:docker && 密码:tcuser

示例:ssh docker@192.168.99.X pw:tcuser

于 2021-01-17T01:20:00.463 回答
-1

我们还可以通过以下命令 ssh 进入 docker -

docker exec -it /bin/sh

于 2019-12-27T13:26:38.060 回答