vagrant + docker не может получить доступ к docker экземплярам через частную сеть - PullRequest
1 голос
/ 13 января 2020

Я создал VirtualBox VM через Vagrant с использованием образа ubuntu-18.04 и установил docker-ce и docker-compose. ВМ имеет NAT и частную сеть. Ниже находится файл Vagrant.

Vagrant.configure("2") do |config|

  config.vm.box = "ubuntu/bionic64"
  config.vm.define "kp-ms"
  config.vm.hostname = "kp-ms"
  config.vm.network "private_network", ip: "192.168.64.10", netmask: "255.255.254.0"
  config.vm.synced_folder "./data", "/data"

  config.vm.provider "virtualbox" do |vb|
    vb.gui = false
    vb.memory = "4096"
    vb.name = "kp-ms"
    vb.check_guest_additions = false
    vb.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"]
  end

  config.vm.provision "shell", inline: <<-SHELL

    apt-get update
    apt-get upgrade -y
    apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
    apt-key fingerprint 0EBFCD88
    add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    apt-get update
    apt-get install -y docker-ce docker-ce-cli containerd.io
    curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose

    sudo docker network create -d macvlan \
          --subnet=192.168.64.0/23 \
          --ip-range=192.168.64.192/28 \
          -o macvlan_mode=bridge \
          -o parent=enp0s8.10 mac10

    sudo ip link add mac10 link enp0s8.10 type macvlan mode bridge
    sudo ip addr add 192.168.64.193/28 dev mac10
    sudo ifconfig mac10 up

    sudo docker-compose -f /data/docker-compose.yml up -d
  SHELL
end

и docker -compose.yml

version: '3.7'
services:
  nginx:
    image: nginx
    networks:
      kp-net:
        ipv4_address: 192.168.64.200
networks:
  kp-net:
    external: true
    name: mac10

Как показано в файле docker -compose, я предоставил данные c IP к docker экземпляру, который попадает в частную сеть su bnet и создал сеть docker с macvlan с подключением к частной сети. С помощью вышеуказанной сети я могу пропинговать экземпляр docker с гостевой виртуальной машины, однако я не могу пропинговать экземпляр Docker с хост-машины (в моем случае это Windows 10)

Из анализа пакетов я обнаружил, что ARP для экземпляра docker не разрешается (без воспроизведения ARP). Как получить доступ к docker экземплярам с хост-компьютера, используя IP-адрес? Я не ищу переадресацию портов, так как этот docker -композит является образцом первого, docker -композит имеет 4-5 дополнительных сервисов. Я пытался использовать ovs-docker проблема с этим, не могу установить дополнительную сеть для связи между docker экземплярами.

...