Docker MACVLAN 仅适用于出站
Docker MACVLAN only works Outbound
我正在尝试为我的 docker 容器设置 MACVLAN。
我有一个全新的 Raspbian 和 Docker 安装,并按照 Docker 文档中列出的步骤创建 MACVLAN:https://docs.docker.com/network/network-tutorial-macvlan.
网络如下所示:
[
{
"Name": "pub_net",
"Id": "782c49f79f549b11f04a6df98b8b2cbf52deef072e036306231309e44a1c9f3a",
"Created": "2020-02-25T14:44:12.105402396+01:00",
"Scope": "local",
"Driver": "macvlan",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "192.168.178.0/24",
"Gateway": "192.168.178.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"682a47a60a5478d19b8c6fc923e11c949f70c5c07fe4dc8d94a772524c2820a1": {
"Name": "IoBroker",
"EndpointID": "5e7068dd9330792a91e1f1f023bd052d91d1fa93f50a2eb670ef8be81b61587f",
"MacAddress": "02:42:c0:a8:b2:02",
"IPv4Address": "192.168.178.2/24",
"IPv6Address": ""
}
},
"Options": {
"parent": "eth0"
},
"Labels": {}
}
假设我有一个连接到该网络的 Alpine 容器。从容器内部,我可以正常访问互联网和我网络上的所有内容。但是,我无法从外部访问 MACVLAN 内的任何容器。我知道这通常不适用于主机,但我不是试图从主机访问容器,而是从网络上的另一台机器访问容器。 Container 的 IP 无法从外部访问。
如果我按照步骤允许主机访问 MACVLAN 上的容器(创建另一个 MACVLAN 并添加路由 table 条目),我可以从主机访问容器,但仍然不能从外面。
也许这是 Linux 网络问题而不是 Docker 网络问题?
Docker版本:19.03.6
OS: Raspbian Buster 10,内核版本 4.19.97-v7+
有什么想法将不胜感激。
实际上我从上周五开始就遇到了同样的问题。
如果我 ping 尝试访问 docker 容器的主机,从容器内部(你的 alpine 容器),我可以从外部访问容器,直到我重新启动容器本身。
我知道这不是解决方案,但可能有助于确定问题。
最佳
航空
这似乎是 Raspbian 中使用的 Linux 内核版本中的 ARP 问题。通过 sudo rpi-update 更新内核后,它现在对我有用了。
我有一个小的解决方法来解决你的问题,因为我遇到了同样的问题。
我做了 omv 5 的全新安装,然后
sudo rpi-update 20354bebcc2a8448128f2348e19e155910d25122
"rpi-update"命令后面的字符串(hash)是修复ARP问题的最新4.19.118内核
我会等 docker 安装问题解决后更新到 5.X 内核。
我正在尝试为我的 docker 容器设置 MACVLAN。 我有一个全新的 Raspbian 和 Docker 安装,并按照 Docker 文档中列出的步骤创建 MACVLAN:https://docs.docker.com/network/network-tutorial-macvlan.
网络如下所示:
[
{
"Name": "pub_net",
"Id": "782c49f79f549b11f04a6df98b8b2cbf52deef072e036306231309e44a1c9f3a",
"Created": "2020-02-25T14:44:12.105402396+01:00",
"Scope": "local",
"Driver": "macvlan",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "192.168.178.0/24",
"Gateway": "192.168.178.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"682a47a60a5478d19b8c6fc923e11c949f70c5c07fe4dc8d94a772524c2820a1": {
"Name": "IoBroker",
"EndpointID": "5e7068dd9330792a91e1f1f023bd052d91d1fa93f50a2eb670ef8be81b61587f",
"MacAddress": "02:42:c0:a8:b2:02",
"IPv4Address": "192.168.178.2/24",
"IPv6Address": ""
}
},
"Options": {
"parent": "eth0"
},
"Labels": {}
}
假设我有一个连接到该网络的 Alpine 容器。从容器内部,我可以正常访问互联网和我网络上的所有内容。但是,我无法从外部访问 MACVLAN 内的任何容器。我知道这通常不适用于主机,但我不是试图从主机访问容器,而是从网络上的另一台机器访问容器。 Container 的 IP 无法从外部访问。
如果我按照步骤允许主机访问 MACVLAN 上的容器(创建另一个 MACVLAN 并添加路由 table 条目),我可以从主机访问容器,但仍然不能从外面。
也许这是 Linux 网络问题而不是 Docker 网络问题?
Docker版本:19.03.6 OS: Raspbian Buster 10,内核版本 4.19.97-v7+
有什么想法将不胜感激。
实际上我从上周五开始就遇到了同样的问题。
如果我 ping 尝试访问 docker 容器的主机,从容器内部(你的 alpine 容器),我可以从外部访问容器,直到我重新启动容器本身。
我知道这不是解决方案,但可能有助于确定问题。
最佳 航空
这似乎是 Raspbian 中使用的 Linux 内核版本中的 ARP 问题。通过 sudo rpi-update 更新内核后,它现在对我有用了。
我有一个小的解决方法来解决你的问题,因为我遇到了同样的问题。
我做了 omv 5 的全新安装,然后
sudo rpi-update 20354bebcc2a8448128f2348e19e155910d25122
"rpi-update"命令后面的字符串(hash)是修复ARP问题的最新4.19.118内核
我会等 docker 安装问题解决后更新到 5.X 内核。