J'utilise open vSwitch (avec DPDK) pour faire communiquer mes machines. J'ai 2 PC physiques. Nginx fonctionne sur l'un d'eux et son ip=10.10.10.6/24. Open vSwitch et Docker fonctionnent sur l'autre machine. Je crée un pont via cette commande :
ovs-vsctl add-br br0 -- set bridge br0 datapath_type=netdev
Et j'ajoute un port au port physique via cette commande qui utilise le pilote DPDK et est connecté à la machine Ngnix avec un câble :
ovs-vsctl add-port br0 dpdk0 -- set Interface dpdk0 \
type=dpdk options:dpdk-devargs=0000:05:00.1
Et assignez une IP au br0 :
ifconfig br0 10.10.10.11 netmask 255.255.255.0 up
Après cela, je crée un conteneur en utilisant mon image :
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
Et lancez le conteneur en utilisant la commande suivante :
docker run --rm -P -it --cap-add NET_ADMIN --name ubuntu1 zkryakgul/ubuntu /bin/bash
Après cela, j'attribue un port au conteneur en utilisant la commande suivante :
ovs-docker add-port br0 eth1 ubuntu1 --ipaddress=10.10.10.12/24
Après toutes ces étapes, ma machine nginx envoie un message au conteneur et le conteneur envoie un message à nginx.
Mais quand j'essaie de wget 10.10.10.6:80
le conteneur ne peut pas se connecter. Mais d'un autre côté, ma machine physique (ip:10.10.10.11) peut le faire. Lorsque je lance la même commande (wget), il obtient la page de 10.10.10.6:80.
Qu'est-ce que je fais de mal ?