如何解决Docker容器mac地址更改
我有一个使用 MAC 地址进行许可的应用程序。我想在 docker 容器中运行这个应用程序以用于 CI/CD 目的。我创建了一个 docker 容器并使用 ENTRYPOINT
来运行一个 shell 脚本。我现在遇到的问题是,当我尝试 ping 任何服务器时,都会出现网络错误。我想知道这是否是我可以解决的问题,或者我是否做错了。我很想为此找到一个解决方案,这样我就可以在将它们投入生产之前测试我为这个系统编写的脚本。我会随时回答任何其他问题。
Dockerfile
FROM centos:latest
COPY startup.sh /startup.sh
ENTRYPOINT ["/bin/sh","/startup.sh"]
startup.sh
ip link set dev eth0 down;
ip link set dev eth0 address 02:42:ac:11:00:11;
ip link set dev eth0 up;
错误
sh-4.4# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/sit 0.0.0.0 brd 0.0.0.0
29: eth0@if30: <BROADCAST,MULTICAST,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
link/ether 02:42:ac:11:00:11 brd ff:ff:ff:ff:ff:ff link-netnsid 0
sh-4.4# ping google.com
ping: google.com: Name or service not known
sh-4.4# ping 4.4.4.4
connect: Network is unreachable
解决方法
如果你需要像这样覆盖低级网络细节,你通常应该在 Docker 级别进行。例如,您可以在启动容器时指定一个 docker run --mac-address
option。您不需要在容器的启动顺序中运行 ip
、ifconfig
或类似的网络管理命令;这完全由 Docker 处理。
docker run --mac-address 02:42:ac:11:00:11 ...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。