如何通过 ssh 进入 docker-machine VirtualBox 实例?
How to ssh into docker-machine VirtualBox instance?
docker-机器版本0.2.0
docker 版本 1.6.2
我正在使用 docker-machine to create a machine using VirtualBox。一切正常,但我想通过 ssh 进入机器本身,但我找不到有关如何执行此操作的说明。我可以连接到 ssh 端口:
ssh $(docker-machine ip dev)
但我不知道要使用什么用户名/密码/身份文件。
您可以通过 运行
登录 docker 台主机
docker-machine ssh default
(此处使用"default"主机)
身份文件应存储在 ~/.docker/machine/machines
下。如果您想登录容器(而不是主机),请按照 user2915097 的建议使用 docker exec
。
终于找到答案了:
我在 Windows 使用 Docker 工具箱(Docker 机器)。
如果我docker-machine -D ssh default
,我发现SSH参数应该是:
主机:本地主机
端口:51701
用户:docker
键:.docker\machine\machines\default\id_rsa
当我更改 Putty/MobaXterm 设置以匹配时,瞧,我可以通过 SSH 进入容器。
如果你真的需要通过 ssh
来完成,这适用于 docker 1.8.2
初始化docker:
eval "$(docker-machine env default)"
从您的默认 docker 机器获取 IP:
docker-machine ip default
这会打印出如下内容:192.168.99.100
ssh docker@192.168.99.100
密码是tcuser
但你也可以使用身份文件,见其他答案
如果出于某种原因您更愿意使用 ssh
命令而不是 docker-machine ssh
,您可以执行
ssh `docker-machine ip machine_name` -ldocker -i ~/.docker/machine/machines/machine_name/id_rsa
对于外面的黑客来说,这里有一个脚本可以通过 ssh 进入 'active' docker-机器。这也为您提供 ssh_key、ssh_port 和 ssh_user 的值,从而可以在本地主机和 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
您可以逐行将其复制并粘贴到您的终端中,它会起作用的。或者,将脚本变成一个函数,并将名称作为参数提供给它。
对于 mac OX,machine 及其密钥位于此处(确保您有密钥,如下所示:
~/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
在我的例子中,machine 的名称是默认的。所以,只是
~/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
我们也可以通过以下命令 ssh 进入 docker -
docker 执行 -it /bin/sh
您可以使用终端上使用的普通 synatx
登录:docker && pasword:tcuser
例如:ssh docker@192.168.99.X
pw:tcuser
docker-机器版本0.2.0 docker 版本 1.6.2
我正在使用 docker-machine to create a machine using VirtualBox。一切正常,但我想通过 ssh 进入机器本身,但我找不到有关如何执行此操作的说明。我可以连接到 ssh 端口:
ssh $(docker-machine ip dev)
但我不知道要使用什么用户名/密码/身份文件。
您可以通过 运行
登录 docker 台主机docker-machine ssh default
(此处使用"default"主机)
身份文件应存储在 ~/.docker/machine/machines
下。如果您想登录容器(而不是主机),请按照 user2915097 的建议使用 docker exec
。
终于找到答案了:
我在 Windows 使用 Docker 工具箱(Docker 机器)。
如果我docker-machine -D ssh default
,我发现SSH参数应该是:
主机:本地主机
端口:51701
用户:docker
键:.docker\machine\machines\default\id_rsa
当我更改 Putty/MobaXterm 设置以匹配时,瞧,我可以通过 SSH 进入容器。
如果你真的需要通过 ssh
来完成,这适用于 docker 1.8.2
初始化docker:
eval "$(docker-machine env default)"
从您的默认 docker 机器获取 IP:
docker-machine ip default
这会打印出如下内容:192.168.99.100
ssh docker@192.168.99.100
密码是tcuser
但你也可以使用身份文件,见其他答案
如果出于某种原因您更愿意使用 ssh
命令而不是 docker-machine ssh
,您可以执行
ssh `docker-machine ip machine_name` -ldocker -i ~/.docker/machine/machines/machine_name/id_rsa
对于外面的黑客来说,这里有一个脚本可以通过 ssh 进入 'active' docker-机器。这也为您提供 ssh_key、ssh_port 和 ssh_user 的值,从而可以在本地主机和 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
您可以逐行将其复制并粘贴到您的终端中,它会起作用的。或者,将脚本变成一个函数,并将名称作为参数提供给它。
对于 mac OX,machine 及其密钥位于此处(确保您有密钥,如下所示:
~/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
在我的例子中,machine 的名称是默认的。所以,只是
~/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
我们也可以通过以下命令 ssh 进入 docker -
docker 执行 -it /bin/sh
您可以使用终端上使用的普通 synatx 登录:docker && pasword:tcuser
例如:ssh docker@192.168.99.X pw:tcuser