【问题标题】:Docker container mac address changeDocker容器mac地址变化
【发布时间】:2021-07-21 05:28:15
【问题描述】:

我有一个使用 MAC 地址进行许可的应用程序。为了 CI/CD 的目的,我想在 docker 容器中运行这个应用程序。我创建了一个 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,UP,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

【问题讨论】:

    标签: linux docker kubernetes networking centos


    【解决方案1】:

    如果您需要像这样覆盖低级网络细节,通常应该在 Docker 级别进行。例如,您可以在启动容器时指定 docker run --mac-address option。您不需要在容器的启动序列中运行ipifconfig 或类似的网络管理命令;这完全由 Docker 处理。

    docker run --mac-address 02:42:ac:11:00:11 ...
    

    【讨论】:

    • 我对这种方法的问题是,在 GitLab 的 CI/CD 中,我认为我无法控制图像的运行方式。我需要使用这个 MAC 地址构建一个映像,这样我就不需要使用任何额外的参数来运行它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    • 2013-08-31
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多