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

Connect to Docker Daemon in Vagrant VM from host via Docker Client

我设置了一个包含 Docker

的 Vagrant 虚拟机
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 虚拟机中的 Docker 守护进程?

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

  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