比如我有 A,B 两个容器,A 容器是 Mongodb 数据库,连接端口是 27017 ;
B 容器是一个 web 服务器,如果需要在 B 容器中使用localhost:27017
连接 A 容器中的数据库,应该怎么配置?
使用方法 docker run --network container:<id|name> [other-options] <image[:tag]> 这样两个容器就会使用同一个网络栈,做到使用 127.0.0.1 去访问另一个容器监听的端口了。
当然了,多个容器之间无法监听统一端口了
感谢11楼 @hxsf
官方文档: https://docs.docker.com/engine/reference/run/#network-settings
done
1
arischow 2017-09-05 23:52:17 +08:00
这两天刚好在弄类似的东西
新建一个 network 然后把他们 connect 起来 https://docs.docker.com/engine/userguide/networking/ 如果你用的 docker-compose 用到的是 networks 和 external https://docs.docker.com/compose/networking/ |
2
arischow 2017-09-05 23:52:52 +08:00
OOOOOH NO,我错了
你这个问题在 docker-compose 用 link 就能解决了 |
3
arischow 2017-09-06 00:02:34 +08:00
#2 'links' - https://docs.docker.com/compose/compose-file/#links
``` services: db-mysql: build: ./db environment: - MYSQL_ROOT_PASSWORD=mysql app-flask: build: . expose: - 5123 environment: - APP_SETTINGS=instance.config.ProductionConfig - DATABASE_URL=mysql+pymysql://root:mysql@db-mysql/demo links: - db-mysql ``` |
4
qsnow6 OP |
5
qsnow6 OP 我用的也是 flask,数据库在另外一个容器里;
默认数据库地址是:localhost:27017 想在不改变默认配置的情况下通过 localhost:27017 就能访问数据库容器 |
6
mooncakejs 2017-09-06 00:19:41 +08:00 via iPhone 1
把 network 设置成 host,只有这一个方法
|
9
wellsc 2017-09-06 01:29:18 +08:00 via iPhone
Mongo conf 中的 host 设置成 0.0.0.0,a,b 容器在同一网段就可以了。
|
10
microhz 2017-09-06 08:12:22 +08:00 via iPhone
可以用 spring cloud config 去配置中心拿地址
|
11
hxsf 2017-09-06 08:52:45 +08:00 2
楼上的各位,docker 容器网络有 container-network 的。。。可以多个容器使用同一网络栈
使用方法 docker run --network container:<id|name> [other-options] <image[:tag]> 这样两个容器就会使用同一个网络栈,做到使用 127.0.0.1 去访问另一个容器监听的端口了。 当然了,多个容器之间无法监听统一端口了 |
14
hxsf 2017-09-06 11:09:59 +08:00 1
|
16
qsnow6 OP |