【问题标题】:How to ssh into docker-machine VirtualBox instance?如何通过 ssh 进入 docker-machine VirtualBox 实例?
【发布时间】:2015-07-31 13:34:22
【问题描述】:

docker-machine 版本 0.2.0 码头工人版本 1.6.2

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

ssh $(docker-machine ip dev)

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

【问题讨论】:

  • 如果您 -1 发​​表评论并解释此问题的问题并允许提问者修改。
  • 在容器内连接的推荐 docker 方式是 docker exec -it my_container /bin/bash 参见文档 docs.docker.com/reference/commandline/cli/#exec
  • @user2915097 问题是 ssh 进入机器本身而不是 docker 容器
  • 很多 Docker 问题如果没有编程内容就会被否决。可以说,这个问题应该是关于 SF 的,但它真的是一个判断电话。

标签: docker docker-machine


【解决方案1】:

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

docker-machine ssh default

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

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

【讨论】:

  • 所以我有另一台 PC(不同于用于设置远程主机的那台),我希望能够通过这台 PC 上的 docker-machine 访问它(就像我从一台用于提供)。我该怎么办?
【解决方案2】:

如果你真的需要通过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,但你也可以使用身份文件,查看其他答案

【讨论】:

【解决方案3】:

终于找到答案了:

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

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

主机:本地主机
端口 : 51701
用户:码头工人
键:.docker\machine\machines\default\id_rsa

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

【讨论】:

  • 嘿,谢谢。在结果之上找到你的答案。使我免于数小时的沮丧。 +1
  • 补充一下,在我的例子中 SSH 端口是 58361。使用 -D 标志时会打印所有必需的详细信息。 Using SSH client type: external {[-o BatchMode=yes -o PasswordAuthentication=no -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -o ConnectionAttempts=3 -o ConnectTimeout=10 -o ControlMaster=no -o ControlPath=none docker@127.0.0.1 -o IdentitiesOnly=yes -i C:\Users\<user>\.docker\machine\machines\default\id_rsa -p 58361] C:\Program Files\Git\usr\bin\ssh.exe}
  • 在哪里可以从docker-machine inspect 获得它?它在Driver->IPAddress 变量中打印非本地地址
【解决方案4】:

对于那里的黑客,这里有一个脚本,它将通过 ssh 进入“活动”的 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
    

    【讨论】:

      【解决方案6】:

      对于 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

      【讨论】:

        【解决方案7】:

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

        示例:ssh docker@192.168.99.X 密码:tcuser

        【讨论】:

          【解决方案8】:

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

          docker exec -it /bin/sh

          【讨论】:

            猜你喜欢
            • 2022-01-22
            • 2017-06-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-08-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多