代码之家  ›  专栏  ›  技术社区  ›  René Winkler

通过Docker客户端从主机连接到Vagrant VM中的Docker守护程序

  •  1
  • René Winkler  · 技术社区  · 6 年前

    我设置了一个包含Docker的Vagrant VM

    Vagrant.configure("2") do |config|
      config.vm.define "node1" do |node1|
        node1.vm.box = "ubuntu/xenial64"
        node1.vm.provision :shell, path: "../docker-installation.sh"
        node1.vm.network "private_network", ip: "192.168.33.10"
      end
    end
    

    我还在主机上安装了Docker,我喜欢在VM中调用Docker。

    我的第一次尝试是这样做:

    docker -H 192.168.33.10 info 
    

    但是,这会输出以下消息:

    Cannot connect to the Docker daemon at tcp://192.168.33.10:2375. Is the docker daemon running?
    

    我想这是docker守护进程运行时连接本身的问题。我假设必须配置SSH。

    如何在主机上配置Docker客户端,以便连接到Vagrant VM中的Docker守护程序?

    1 回复  |  直到 6 年前
        1
  •  4
  •   René Winkler    6 年前

    我很高兴我发现了这一点。也许这个答案对其他人有帮助。

    1. 通过查找private\u密钥的路径

      vagrant ssh-config
      
    2. 从private\u密钥生成pem文件

      openssl rsa -in path/private_key -outform pem > key.pem
      chmod 600 key.pem
      
    3. 将用户添加到docker组:

      sudo usermod -aG docker $USER
      sudo su vagrant
      
    4. 打开SSL隧道(有关详细信息: https://sysadmins.co.za/forwarding-the-docker-socket-via-a-ssh-tunnel-to-execute-docker-commands-locally/ )

      screen -S docker
      sudo ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -i /path/key.pem -NL 127.0.0.1:2375:/var/run/docker.sock vagrant@192.168.33.10
      
    5. 呼叫Docker

      docker -H 127.0.0.1:2375 info