通过Docker Client从主机连接到Vagrant VM中的Docker Daemon

时间:2018-08-24 13:47:28

标签: docker networking vagrant

我设置了一个包含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 个答案:

答案 0 :(得分:1)

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

  1. 通过

    查找private_key的路径
    vagrant ssh-config
    
  2. 从private_key生成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