我试过以下
docker run -e lxc --lxc-conf="lxc.network.hwaddr=00:0C:29:88:30:CC" -i -t centos ifconfig
但正如你从我的输出中看到的那样,它并没有使用mac地址
eth0: flags=3<UP,BROADCAST> mtu 1500
inet 172.17.0.6 netmask 255.255.0.0 broadcast 0.0.0.0
inet6 fe80::42:acff:fe11:6 prefixlen 64 scopeid 0x20<link>
ether 02:42:ac:11:00:06 txqueuelen 1000 (Ethernet)
RX packets 1 bytes 90 (90.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1 bytes 90 (90.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
我在Ubuntu上运行docker 1.3,并且从centos7映像生成容器
Client version: 1.3.2
Client API version: 1.15
Go version (client): go1.3.3
Git commit (client): 39fa2fa
OS/Arch (client): linux/amd64
Server version: 1.3.2
Server API version: 1.15
Go version (server): go1.3.3
Git commit (server): 39fa2fa
感谢您在我的容器中成功更改我的mac地址的任何帮助。
答案 0 :(得分:2)
如果查看https://github.com/docker/docker/blob/v1.4.1/vendor/src/github.com/docker/libcontainer/netlink/netlink_linux.go#L528处的docker代码,您会看到只接受非广播的本地mac地址。在https://en.wikipedia.org/wiki/MAC_address中搜索“组织唯一标识符”以获取解释。实际上,这意味着MAC的第二个字符必须是2,6,A或E.
如果您运行docker run --mac-address=00:0C:29:88:30:CC centos ifconfig
,您应该会看到来自上面指出的代码的错误消息。
答案 1 :(得分:1)
我这样做的方法是以特权模式运行容器,然后在容器中运行ifconfig来设置它。但是,如果您正在寻找一种可以在运行命令中执行此操作的解决方案,我认为您必须等待其他响应......
答案 2 :(得分:0)
首先,检查你的系统是否有lxc-start
命令?
如果有lxc-start
命令
#stop docker service,使用命令运行docker service
sudo docker -d -e lxc
,看看有任何错误报告。
如果没有lxc-start
命令
apt-get install lxc-docker