我怎么能删除需要两个docker集装箱一起使用桥接networking?

我有三个docker集装箱:

1:在端口8080上可访问的nginx容器,不使用桥接networking

2:使用桥接networking在端口8080上运行tomcat的xwiki容器

3:承载xwiki数据库的Postgres容器,可以使用与xwiki容器相同的桥接networking在端口5432上访问

我想能够设置nginx反向代理并加载一个url,如http:// site-root / xwiki的xwiki网站,但它不能做到这一点,因为它不在同一个桥接networking,我得到一个不路由到主机错误…

所有的主机都可以从远程主机使用docker hosts ip和相应的容器端口访问…

我已经创build了不使用桥接networking来testing这个xwiki和postgres容器,但是xwiki tomcat服务器失败,因为xwiki无法findpostgres服务器,我得到下面的错误作为一个tomcatexception:

java.net.UnknownHostException: postgres-db-server 

是否消除了为xwiki和Postgres容器使用桥接networking的需要,并使用docker hosts IP和它们各自的端口号进行通信?

我想我可能需要编辑xwiki容器中的tomcatconfiguration,以便它指向使用docker hosts IP和postgres默认端口的postgres服务器…

任何人都可以给我一个想法,如果这听起来像是正确的解决scheme,或者如果我缺less关于桥接networking的需要的东西?

我意识到一个可能的解决scheme是将nginx容器设置为使用相同的桥接networking,但我也希望nginx服务能够反向代理在docker主机上运行的node.js服务器…(不是通过docker)

我应该只是containerise节点和运行所有容器使用相同的桥接networking,逻辑上应该消除这个问题,但我担心,它可能会导致其他问题下线…

docker主机在Centos 7上运行

用于手动运行容器的命令如下所示:

Nginx的

 docker run -dti --name nginx-dev --hostname nginx-dev -p 80:80 -v /nginx/www:/usr/share/nginx/html:ro -v /nginx/conf:/etc/nginx -P -d nginx 

Postgres的

 docker run --net=xwiki-nw --name postgres-db-server -p 5432:5432 -v /postgres/data:/var/lib/postgresql/data -e POSTGRES_ROOT_PASSWORD=xwiki -e POSTGRES_USER=xwiki -e POSTGRES_PASSWORD=xwiki -e POSTGRES_DB=xwiki -e POSTGRES_INITDB_ARGS="--encoding=UTF8" -d postgres:9.5 

XWiki实现

 docker run --net=xwiki-nw --name xwiki -p 8080:8080 -v /xwiki:/usr/local/xwiki -e DB_USER=xwiki -e DB_PASSWORD=xwiki -e DB_DATABASE=xwiki -e DB_HOST=postgres-db-server xwiki:postgres-tomcat 

 docker network connect xwiki nginx-dev 

然后你的nginx容器就能找到到其他两个容器的路由。