docker-machine 版本为0.2.0,docker 版本为1.6.2。
我正在使用docker-machine通过VirtualBox创建一台虚拟机。一切工作正常,但我想要ssh连接到这台虚拟机,但是没有找到如何操作的说明。我可以连接到ssh端口:
ssh $(docker-machine ip dev)
但是我不知道要使用哪个用户名/密码/身份文件。
docker-machine 版本为0.2.0,docker 版本为1.6.2。
我正在使用docker-machine通过VirtualBox创建一台虚拟机。一切工作正常,但我想要ssh连接到这台虚拟机,但是没有找到如何操作的说明。我可以连接到ssh端口:
ssh $(docker-machine ip dev)
但是我不知道要使用哪个用户名/密码/身份文件。
您可以仅运行此命令即可登录Docker Machine主机:
docker-machine ssh default
(这里使用“默认”主机)
身份文件应存储在~/.docker/machine/machines
下。如果您想登录容器(而不是主机),请按照用户2915097的建议使用 docker exec
。
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
,但您也可以使用身份文件,请参见其他答案。
tcuser
非常好奇。你能透露一下你的秘密吗? :-) - fmquaglia最终,我找到了答案:
我使用的是Docker Toolbox (Docker Machine)在Windows上。
如果我docker-machine -D ssh default
,我会发现SSH参数如下:
主机:localhost
端口:51701
用户:docker
密钥:.docker\machine\machines\default\id_rsa
当我更改我的Putty/MobaXterm设置以匹配时,哇,我可以SSH到容器中。
docker-machine inspect
的信息?它在 Driver->IPAddress
变量中打印了非本地地址。 - falko对于那些黑客,这里有一个脚本可以ssh进入“活动”的docker-machine。这还为您提供了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
你可以逐行将它复制粘贴到终端中,它就能工作。或者,将脚本制成一个函数,并将名称作为参数传递给它。
如果由于某些原因,您更愿意使用ssh
命令而不是docker-machine ssh
,您可以执行以下操作:
ssh `docker-machine ip machine_name` -ldocker -i ~/.docker/machine/machines/machine_name/id_rsa
对于Mac操作系统,机器和其密钥位于此处(确保您在此处放置了密钥,类似于以下内容:)
~/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
docker@default:~$ uname -a
Linux default 4.1.19-boot2docker #1 SMP Thu Apr 7 02:41:05 UTC 2016 x86_64 GNU/Linux
您可以使用在终端上常用的语法 登录: docker && 密码: tcuser
例如:ssh docker@192.168.99.X 密码:tcuser
docker exec -it my_container /bin/bash
,请查看文档https://docs.docker.com/reference/commandline/cli/#exec。 - user2915097