Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过SSH连接到Vagrant 1.6 Docker提供程序设置的boot2docker主机vm中?_Vagrant_Docker_Boot2docker - Fatal编程技术网

如何通过SSH连接到Vagrant 1.6 Docker提供程序设置的boot2docker主机vm中?

如何通过SSH连接到Vagrant 1.6 Docker提供程序设置的boot2docker主机vm中?,vagrant,docker,boot2docker,Vagrant,Docker,Boot2docker,我在OSX上,我希望能够通过SSH连接到主机vm,以便: 访问本机docker环境。这有助于理解和调试端口转发问题 Vagrant rsync似乎留下了许多未使用的同步目录,这些目录占用了我想要恢复的磁盘空间 要明确的是,这个问题不是ssh:插入Vagrant提供程序创建的docker容器,而是插入Vagrant创建的中间boot2docker主机vm 我知道一个解决办法是不使用默认的boot2docker作为主机vm(如答案中所述),但这不是这个问题的重点。Vagrant的boot2docke

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

  • 访问本机docker环境。这有助于理解和调试端口转发问题
  • Vagrant rsync似乎留下了许多未使用的同步目录,这些目录占用了我想要恢复的磁盘空间 要明确的是,这个问题不是ssh:插入Vagrant提供程序创建的docker容器,而是插入Vagrant创建的中间boot2docker主机vm


    我知道一个解决办法是不使用默认的boot2docker作为主机vm(如答案中所述),但这不是这个问题的重点。

    Vagrant的boot2docker保留boot2docker的ssh用户名和密码

    SSH到虚拟机 Boot2Docker使用生成的SSH密钥自动登录,但如果您想使用SSH登录 手动启动机器(或者您没有使用
    boot2docker
    managed虚拟机),凭据包括:

    user: docker
    pass: tcuser
    

    默认情况下,该端口从本地端口
    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:~$ 
    
    $sshdocker@localhost-第2022页
    docker@localhost的密码:tcuser
    ##        .
    ## ## ##       ==
    ## ## ## ##      ===
    /""""""""""""""""\___/ ===
    ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
    \______o__/
    \    \        __/
    \____\______/
    _                 _   ____     _            _
    | |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
    | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
    | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
    |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
    boot2docker:0.8.0
    docker@boot2docker:~$ 
    
    您可以使用
    vagrant ssh docker host id
    ssh进入docker host,但首先您需要知道docker-host-id。
    您可以使用
    Vagrant global status
    命令获取所有活动的流浪环境的列表。
    要获取docker主机id,您可以使用grep进行筛选:

    vagrant全球状态| grep docker主机

    您将获得类似以下内容的输出:

    68f58d0  default  virtualbox running   /Users/yourUser/.vagrant.d/data/docker-host
    
    复制第一列id,然后将ssh复制到docker主机:

    vagrant ssh 68f58d0


    您也可以放弃使用
    boot2docker
    ssh
    功能,像这样“手动”完成:


    -p
    的参数通常是端口2022,但上面显示了如果需要,如何通过编程确定此参数。

    您可以直接使用SSH:

    ssh docker@$(boot2docker ip)
    
    (密码:tcuser,请参阅)


    您还可以将公钥复制/粘贴到boot2docker计算机,因此无需每次键入密码:

    cat ~/.ssh/id_rsa.pub | ssh docker@$(boot2docker ip) 'cat - >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys'
    

    2015年10月:Boot2docker被弃用,取而代之的是docker机器。要登录:

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

    对于具有流浪密码的流浪主机:

    ssh -p 2222 vagrant@localhost
    
    ssh -p 2222 docker@localhost
    
    否则使用tcuser密码:

    ssh -p 2222 vagrant@localhost
    
    ssh -p 2222 docker@localhost
    

    是关于为什么这样做的更多信息。

    关于
    vagrant ssh
    ?这将ssh到由vagrant docker提供程序提供的docker容器中,而不是到boot2docker主机vm中。我相信这是最好的答案。我有“常规”boot2docker,我有Vagrant启动的boot2docker。其他答案将我连接到“常规”boot2docker机器,而不是Vagrant使用的机器。您也可以使用生成的标识文件。“ssh-I~/.ssh/id_boot2docker docker@$(boot2docker ip)”这是现在最简单和最新的方法。在最新的docker中,这已从
    boot2docker
    更改为
    docker-machine
    。具体而言,现在是
    docker-machine-ssh-default
    如果您想从mobaXterm或任何其他ssh客户端进行ssh,这将非常有用