使用LXC驱动程序将静态IP设置为泊坞窗容器

我安装了docker到我的Ubuntu 14.04笔记本电脑。 我从中央registry中拖出dockerregistry映像。 要将容器的IP地址修改为静态值,我首先更改了我的/etc/defaults/docker DOCKER_OPTS ,并将-e lxc添加到了DOCKER_OPTSvariables中。

然后运行我的本地registry我使用了下面的命令;

 docker run \ -i -t -h myreg \ --net="none" \ --lxc-conf="lxc.network.hwaddr=91:21:de:b0:6b:61" \ --lxc-conf="lxc.network.type = veth" \ --lxc-conf="lxc.network.ipv4 = 172.17.0.20/16" \ --lxc-conf="lxc.network.ipv4.gateway = 172.17.42.1" \ --lxc-conf="lxc.network.link = docker0" \ --lxc-conf="lxc.network.name = eth0" \ --lxc-conf="lxc.network.flags = up" \ --name myreg \ -p 5000:5000 \ -d registry \ /bin/bash 

然后用docker attach myreg来访问容器的shell。 安装net-tools软件包之后,我检查了它的IP地址,并且发现它是172.17.0.20。 我试图从主机ping它,它正在回复。

问题是,当我用docker inspect myreg这个容器的configuration时,NetworkSettings部分的输出结果如下

 "NetworkSettings": { "Bridge": "docker0", "Gateway": "172.17.42.1", "IPAddress": "172.17.0.8", "IPPrefixLen": 16, "PortMapping": null, "Ports": { "5000/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "5000" } ] } 

它显示的IP地址是172.17.0.8。如果我不是使用lxc驱动程序的话,这是应该分配的值。 当我使用docker push命令将标记的图像推送到本地registry时,这就成了一个问题。 因为, docker使用这个错误的IP来推送图像,并抛出一个错误日志如下

 de7e1cfc] +job push(127.0.0.1:5000/mongo) 2014/07/18 17:10:19 Can't forward traffic to backend tcp/172.17.0.8:5000: dial tcp 172.17.0.8:5000: no route to host 2014/07/18 17:10:22 Can't forward traffic to backend tcp/172.17.0.8:5000: dial tcp 172.17.0.8:5000: no route to host 

这里有什么问题? 还是我在做smt。 错误?

你在运行什么版本的Docker? Docker 1.0不再使用LXC,而是用自己的libcontainerreplace它。 下面这个博客的LXC命令不适合我 – http://goldmann.pl/blog/2014/01/21/connecting-docker-containers-on-multiple-hosts/#_set_up

如果您降级到0.7,并按照lxcstream程,它将工作。