如何启动一个多接口的docker集装箱?

我想启动一个有三个接口的Docker容器,所有这些接口都会连接到主机上的一个网桥。 唯一的解决办法是提供我自己的networking插件。 一旦创build容器来configuration其networking,docker守护进程将调用以下接口:

func (d *Driver) Join(r *dknet.JoinRequest) (*dknet.JoinResponse, error) 

JoinRequest结构中只有一个Endpoint对象,所以上面的调用只能configuration一个容器接口。

我不知道如何创build和configuration三个容器接口?

你需要多次做

 $ docker network create net1 bdc53c143e89d562761eedfd232620daf585968bc9ae022ba142d17601af6146 $ docker network create net2 d9a72a7a6ee6b61da3c6bb17e312e48888807a5a8c159fd42b6c99d219977559 $ docker network create net3 d2be9628f4fd60587d44967a5813e9ba7c730d24e953368b18d7872731a9478c $ docker run -it --network net3 ubuntu:16.04 bash root@cd70c7cbe367:/# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 90: eth0@if91: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:18:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.24.0.2/16 scope global eth0 valid_lft forever preferred_lft forever 

现在你的容器只能运行net3networking。 你也可以连接net1net2

 $ docker network connect net1 cd70c7cbe367 $ docker network connect net2 cd70c7cbe367 

之后在容器中检查

 root@cd70c7cbe367:/# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 90: eth0@if91: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:18:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.24.0.2/16 scope global eth0 valid_lft forever preferred_lft forever 92: eth1@if93: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:16:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.22.0.2/16 scope global eth1 valid_lft forever preferred_lft forever 94: eth2@if95: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:17:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.23.0.2/16 scope global eth2 valid_lft forever preferred_lft forever 

PS:默认情况下在容器中缺lessip命令,所以我安装了iproute2打包进行检查