Контейнер Docker может пропинговать снаружи, даже если у него есть только частная сеть - PullRequest
0 голосов
/ 12 ноября 2019

Я пытаюсь создать проект Vagrant с: 1. VM VirtualBox (Ubonda) с доступом в Интернет (мостовой), который может взаимодействовать только с 2. 2. Контейнер Docker (Slave-Connector), который может взаимодействовать с1. (соединен мостом) и с 3. (только для хоста) 3. Контейнер Docker (Slave1), доступный только для 2.

Это мой VagrantFile:

Vagrant.configure("2") do |config|
  config.vm.define "ubonda" do |vm0|
    vm0.vm.box = "hashicorp/precise64"
    vm0.vm.provider "virtualbox"

    vm0.vm.network "public_network", ip: "192.168.1.75", bridge: "wlan0"
  end

  config.vm.define "slave-connector" do |vm1|
    vm1.vm.hostname = "slave-connector"
    vm1.vm.provider "docker" do |d|
      d.build_dir = "."
      d.name = 'slave-connector'
    end 

    vm1.vm.network :public_network, type: "dhcp", bridge: "wlan0", docker_network__ip_range: "192.168.1.252/24"
    vm1.vm.network :private_network,ip: "172.20.128.2", netmask: "16"
  end

  config.vm.define "slave1" do |vm2|
    vm2.vm.hostname = "slave1"
    vm2.vm.provider "docker" do |d|
      d.build_dir = "."
      d.name = 'slave1'
    end 

    vm2.vm.network :private_network,ip: "172.20.128.3", netmask: "16"
  end
end

Надеюсьне знаю почему, но Slave1 может пропинговать Ubonda, даже если у него нет доступа к нему! Как мне этого добиться?

1 Ответ

0 голосов
/ 12 ноября 2019

Я думаю, что правильный способ достижения этой цели -

1.Создать сеть докера:

docker network create bridge2 --gateway=192.168.50.1 --subnet=192.168.50.1/24

2.Проверить идентификатор сети:

docker network ls

3.Вложить в Vagrantfile:

Vagrant.configure("2") do |config|
  config.vm.define "ubonda" do |vm0|
    vm0.vm.box = "hashicorp/precise64
    vm0.vm.provider "virtualbox"

    vm0.vm.network "public_network", ip: "192.168.50.4", bridge: "br-9ed82ac09f1b"
   end

  config.vm.define "slave-connector" do |vm1|
    vm1.vm.hostname = "slave-connector"
    vm1.vm.provider "docker" do |d|
      d.build_dir = "."
      d.name = 'slave-connector'
    end 

    vm1.vm.network :public_network, ip: "192.168.50.5", bridge: "br-9ed82ac09f1b"
    vm1.vm.network :private_network,ip: "50.20.128.2", netmask: "16", , docker_network__internal: true
   end

   config.vm.define "slave1" do |vm2|
     vm2.vm.hostname = "slave1"
     vm2.vm.provider "docker" do |d|
       d.build_dir = "."
       d.name = 'slave1'
     end    

     vm2.vm.network :private_network,ip: "50.20.128.3", netmask: "16", docker_network__internal: true
   end
end
...