如何从 docker 容器获取远程机器的 MAC 地址
How to fetch MAC address of remote machine from docker container
我正在使用 python:3.6-alpine
docker 容器。
我有一个网络服务,可以找到提供的 IP 地址的 MAC 地址。
要查找给定远程 machine 的 mac 地址,请说 host=10.11.15.100
我正在使用
python3 脚本下方。
import getmac
mac_address = getmac.get_mac_address(ip=host)
当我在本地 运行 这个脚本时,它会给出所提供主机的正确 mac 地址。
但是当我 运行 它在 docker 容器中时它给出 None
.
注意:- 我能够从 docker 容器中 ping 给定主机,但无法获得 mac 地址。
使用此命令获取容器的 Mac 地址
docker container inspect -f {{.NetworkSettings.MacAddress}} container-id
如果您能够从 docker 容器 ping 给定的远程 machine 但无法获得 mac 地址,这意味着
- MAC地址在路由中不可用table
- 主机网络接口在 Docker 容器内不可用。
对于第一种情况,您可以 ping machine,它可以在路由 table.
中添加 machine 的 MAC 地址
对于 #2 情况,您可以将主机网络接口添加到 Docker 容器。
例如。 docker run --network="host" -it network_service:latest
我正在使用 python:3.6-alpine
docker 容器。
我有一个网络服务,可以找到提供的 IP 地址的 MAC 地址。
要查找给定远程 machine 的 mac 地址,请说 host=10.11.15.100
我正在使用
python3 脚本下方。
import getmac
mac_address = getmac.get_mac_address(ip=host)
当我在本地 运行 这个脚本时,它会给出所提供主机的正确 mac 地址。
但是当我 运行 它在 docker 容器中时它给出 None
.
注意:- 我能够从 docker 容器中 ping 给定主机,但无法获得 mac 地址。
使用此命令获取容器的 Mac 地址
docker container inspect -f {{.NetworkSettings.MacAddress}} container-id
如果您能够从 docker 容器 ping 给定的远程 machine 但无法获得 mac 地址,这意味着
- MAC地址在路由中不可用table
- 主机网络接口在 Docker 容器内不可用。
对于第一种情况,您可以 ping machine,它可以在路由 table.
中添加 machine 的 MAC 地址
对于 #2 情况,您可以将主机网络接口添加到 Docker 容器。
例如。 docker run --network="host" -it network_service:latest