2

Я использую 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.

Что я делаю неправильно?

1 ответ1

0

Я наконец-то уловил проблему.Проблема в разгрузке tcp в контейнере Docker.Когда я закрываю разгрузку tcp с помощью этой команды:

ethtool -K eth6 tx off rx off

Все отлично работает

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .