Я создал 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 экземплярами.