如何通过SSH连接到Vagrant 1.6 Docker Provider设置的boot2docker主机vm?

 喵喵的诱惑_204 发布于 2023-01-08 17:20

我在OSX上,我希望能够通过SSH连接到主机vm,以便:

    访问本机docker环境.这有助于理解和调试端口转发问题.

    Vagrant rsync似乎留下了许多未使用的同步目录,这些目录占用了我想要恢复的磁盘空间.

要明确的是,这个问题不是关于ssh:进入Vagrant提供程序创建的docker容器,而是关于Vagrant创建的中间boot2docker主机vm.

我知道,一个解决方法是不使用默认的boot2docker作为主机VM(如答案解释这里),但这不是这个问题是关于什么的.

4 个回答
  • 2015年10月:不推荐使用Boot2docker,转而使用docker-machine.登录:

    $ docker-machine ls
    NAME      ACTIVE   DRIVER       STATE     URL                         SWARM
    default   *        virtualbox   Running   tcp://192.168.99.100:2376   
    
    $ docker-machine ssh default
    

    2023-01-08 17:21 回答
  • Vagrant的boot2docker保留了boot2docker的ssh用户名和密码.

    SSH进入VM

    $ boot2docker ssh
    

    Boot2Docker使用生成的SSH密钥自动登录,但如果您想手动SSH(或者您没有使用boot2docker托管VM),则凭据是:

    user: docker
    pass: tcuser
    

    https://github.com/boot2docker/boot2docker#ssh-into-vm

    2022默认情况下,端口从本地端口转发.你可以验证这个:

    $ VBoxManage list vms | grep docker
    "docker-host_default_1234567890000_1234" {3d66ecf6-4539-47ca-afd2-66f953cd9a3e}
    $ VBoxManage showvminfo docker-host_default_1234567890000_1234 | grep ssh
    NIC 1 Rule(1):   name = ssh, protocol = tcp, host ip = 127.0.0.1, host port = 2022, guest ip = , guest port = 22
    

    然后登录:

    $ ssh docker@localhost -p 2022
    docker@localhost's password: tcuser
                            ##        .
                      ## ## ##       ==
                   ## ## ## ##      ===
               /""""""""""""""""\___/ ===
          ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
               \______ o          __/
                 \    \        __/
                  \____\______/
     _                 _   ____     _            _
    | |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
    | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
    | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
    |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
    boot2docker: 0.8.0
    docker@boot2docker:~$ 
    

    2023-01-08 17:21 回答
  • 您也可以放弃使用boot2dockerssh功能并"手动"执行此操作:

    $ ssh \
    -i $HOME/.ssh/id_boot2docker \
    -p $(boot2docker config 2>&1 | awk '/SSHPort/ {print $3}') \
    docker@localhost
    

    参数-p通常是端口2022,但上面显示了如何根据需要以编程方式确定.

    2023-01-08 17:23 回答
  • 您可以使用ssh进入docker主机,vagrant ssh docker-host-id但首先您需要知道docker-host-id.
    您可以使用vagrant global-status命令获取所有活动Vagrant环境的列表.
    要获取docker-host id,您可以使用grep进行过滤:

    vagrant global-status | grep docker-host

    你将获得类似于的输出:

    68f58d0  default  virtualbox running   /Users/yourUser/.vagrant.d/data/docker-host
    

    复制第一列id,然后ssh到docker-host:

    vagrant ssh 68f58d0

    流浪的全球状态文档

    2023-01-08 17:23 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有