如何使用docker和travisfindnetworkingIP?

在我的本地设置中,我可以运行…

docker run --name myapp -e HOST=$(docker-machine ip default) --user root myapp 

…然后使用$HOST连接到任何其他容器(例如一个正在运行的mongodb)。

但是,在特拉维斯, docker-machine不存在。 因此,我不能简单地把这一行放在我的.travis.yml

我如何获得networkingIP?

标志 – --link添加到/etc/hosts的条目与指定的正在运行的容器的IP地址

 docker run --name myapp --link mongodb:mongodb myapp 

但请注意:

默认的docker0桥接networking支持使用端口映射和docker run --link来允许docker0networking中的容器之间的通信。 这些技术很麻烦,容易出错。 虽然它们仍然可以作为技术提供给您,但最好避免使用它们,而是定义自己的桥梁networking。

另一种select是使用标志--add-host如果你想添加一个已知的IP地址

 docker run --name myapp --add-host mongodb:10.10.10.1 myapp 

选项2

创build一个networking

 docker network create --subnet=172.18.0.0/16 mynet123 

运行mongodb容器分配静态IP

 docker run --network mynet123 --ip 172.18.0.22 -d mongodb 

将该ip添加到其他容器

 docker run --network mynet123 --add-host mongodb:172.18.0.22 -d myapp