Я использую open vSwitch(с DPDK) для связи моих машин. У меня 2 физических ПК. Nginx работает над одним из них и его ip = 10.10.10.6/24. Откройте vSwitch и Docker работает на другом компьютере. Я создаю мост с помощью этой команды:
ovs-vsctl add-br br0 -- set bridge br0 datapath_type=netdev
И я добавляю один порт к физическому порту с помощью этой команды, которая использует драйвер DPDK и подключена к машине Ngnix с помощью кабеля:
ovs-vsctl add-port br0 dpdk0 -- set Interface dpdk0 \
type=dpdk options:dpdk-devargs=0000:05:00.1
И назначьте IP для br0:
ifconfig br0 10.10.10.11 netmask 255.255.255.0 up
После этого я создаю контейнер, используя мое изображение:
Dockerfile:
FROM ubuntu:latest
MAINTAINER Zekeriya Akgul
RUN apt-get update -y && \
apt-get upgrade -y && \
apt-get install -y apache2 iputils-ping iputils-tracepath iproute2 net-tools wget
EXPOSE 80 443 444
И запустите контейнер, используя следующую команду:
docker run --rm -P -it --cap-add NET_ADMIN --name ubuntu1 zkryakgul/ubuntu /bin/bash
После этого я назначаю порт контейнеру с помощью следующей команды:
ovs-docker add-port br0 eth1 ubuntu1 --ipaddress=10.10.10.12/24
После всех этих шагов моя машина nginx пропингует контейнер, а контейнер pinging nginx.
Но когда я пытаюсь wget 10.10.10.6:80
, контейнер не может подключиться. Но с другой стороны, моя физическая машина (ip:10.10.10.11) может делать. Когда я запускаю ту же команду (wget), она получает страницу с 10.10.10.6:80.
Что я делаю неправильно?