【问题标题】:Is it possible to set a MAC address for `docker build`?是否可以为 `docker build` 设置 MAC 地址?
【发布时间】:2018-07-18 10:24:43
【问题描述】:

使用docker run,可以使用--mac-address 选项修复MAC 地址。我看过了,我找不到用docker build 修复 MAC 地址的方法。我想要将许可证固定到 MAC 地址的软件进行 docker 化(我不是想绕过许可证;我想拥有一个更可重现的系统架构)。

谢谢!

【问题讨论】:

    标签: docker dockerfile docker-build


    【解决方案1】:

    让我们考虑下面的 Dockerfile

    FROM alpine
    RUN ifconfig | grep -i hwaddr
    

    如果你使用构建它

    docker build .
    

    你得到

    Sending build context to Docker daemon  2.048kB
    Step 1/2 : FROM alpine
     ---> 7328f6f8b418
    Step 2/2 : RUN ifconfig | grep -i hwaddr
     ---> Running in c092838dbe31
    eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02
    Removing intermediate container c092838dbe31
     ---> 7038787f51b8
    

    现在我们不能控制 docker build 的 Mac 地址,但是我们可以控制 build 的网络,我们可以控制一个容器的 mac 地址。所以让我们用我们的mac地址启动一个容器

    $ docker run --name mac1234deb06b61 --mac-address="12:34:de:b0:6b:61" -d alpine tail -f /dev/null
    c3579e4685933b757f51c5f9e36d620dbe3a62abd0e0d6a421b5f1c04045061c
    
    $ docker build --network container:mac1234deb06b61 --no-cache .
    Sending build context to Docker daemon  2.048kB
    Step 1/2 : FROM alpine
     ---> 7328f6f8b418
    Step 2/2 : RUN ifconfig | grep -i hwaddr
     ---> Running in 4390f13cbe8f
    eth0      Link encap:Ethernet  HWaddr 12:34:DE:B0:6B:61
    Removing intermediate container 4390f13cbe8f
     ---> b0b5f7321921
    Successfully built b0b5f7321921
    

    如您所见,现在 docker build 采用更新后的 mac 地址

    【讨论】:

    • 此方法不适用于带有 windows 容器的 windows:sharing of hyperv containers network is not supported
    猜你喜欢
    • 2013-08-31
    • 2015-06-10
    • 1970-01-01
    • 2012-03-01
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多