如何使用macvlan网络从外部主机ping本地docker容器?

时间:2017-11-28 10:56:49

标签: docker networking macvlan

目标:假设两个主机A& B.在A处的容器x应该能够从主机B进行固定,使得该容器x与A& A在同一网络中存在。 B并有自己的IP地址。

Docker为多主机网络提供两种类型的网络解决方案 1)带/不带docker swarm的覆盖网络2)Macvlan网络。 我想知道第二类Macvlan网络如何实现目标

2 个答案:

答案 0 :(得分:0)

当服务正在运行时,您可以通过

附加它们进行调试

docker exec -ti some-service.1.lz3j7mqb1ux4jp5cwe87gpiok sh

您需要使用docker ps找出服务名称。

然后你可以尝试ping另一个服务。但这只适用于两个服务都连接到同一个不进入的覆盖网络的情况。

docker network create -d overlay dev
docker service create --network dev --name a ...
docker service create --network dev --name b ...

然后你可以从b ping a和{。{}获取ping b

答案 1 :(得分:0)

创建一个名为my-macvlan-net的macvlan网络:

$ docker network create -d macvlan \
  --subnet=172.16.86.0/24 \
  --gateway=172.16.86.1 \
  -o parent=eth0 \
  my-macvlan-net

启动一个示例高山容器并将其附加到my-macvlan-net网络:

$ docker run --rm -dit \
  --network my-macvlan-net \
  --name my-macvlan-alpine \
  alpine:latest \
  ash

检查容器网络设置:

$ docker exec my-macvlan-alpine ip addr show eth0

9: eth0@tunl0: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:10:56:02 brd ff:ff:ff:ff:ff:ff
inet 172.16.86.2/24 brd 172.16.86.255 scope global eth0
   valid_lft forever preferred_lft forever

$ docker exec my-macvlan-alpine ip route

default via 172.16.86.1 dev eth0
172.16.86.0/24 dev eth0 scope link  src 172.16.86.2

Networking using a macvlan network