1
zuolan 2017-06-03 20:43:03 +08:00
Docker 的 link 实际上会修改容器的 /etc/hosts 文件,所以直接使用 mongodb 的容器名称加上端口号就可以连接了,有点像使用域名连接一样。
|
2
SlipStupig OP @zuolan 哦,那程序里面要改成 host:port 这种形式?
|
3
tlday 2017-06-03 21:53:34 +08:00 via Android
link 选项已经不推荐了,你说的这些 docker 文档写的很清楚
|
4
SlipStupig OP @tlday 有什么更好的办法吗?
|
5
tlday 2017-06-03 22:01:08 +08:00 via Android 1
Warning: The --link flag is a deprecated legacy feature of Docker. It may eventually be removed. Unless you absolutely need to continue using it, we recommend that you use user-defined networks to facilitate communication between two containers instead of using --link. One feature that user-defined networks do not support that you can do with --link is sharing environmental variables between containers. However, you can use other mechanisms such as volumes to share environment variables between containers in a more controlled way.
出处:https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/#connect-using-network-port-mapping |
6
yiding 2017-06-03 22:58:38 +08:00 via iPhone
@SlipStupig 可以使用 network 参数,最新的几个版本中都有
https://docs.docker.com/engine/userguide/networking/#default-networks |
7
beginor 2017-06-04 07:59:55 +08:00 via Android
确实不推荐使用 link, 建议使用指定 network 或者 volume 的形式
|
8
SlipStupig OP @beginor 我是使用 docker-compose 构建的,我该如何编排多个容器呢?
|
9
deepzz 2017-06-04 15:14:56 +08:00
有 a-docker-compose.yml 和 b-docker-compose.yml:
version: '2' services: ping: image: alpine command: ping redis external_links: - redis networks: default: external: name: a_default 这是 b-docker-compose.yml。目的是去 ping redis。 在 a.docker-compose.yml 启动的时候创建了默认的网络 a_default (你可以通过 $docker network ls 查看)并启动了 redis. 那么重要的来了,你需要在 b-docker-compose.yml 中指定 a 的 networks,如上面所示。 |
10
SlipStupig OP @deepzz 如果 host 和容器不是一个机器也可以嘛?
|
11
jhsea3do 2017-06-05 11:16:46 +08:00
既然使用 link, 你应该不太用 scale 的,
其实指定 hostname / domainname 就可以了,另外 可以考虑指定 depends_on 如果两个 container 都在同一个域下面,可以直接用主机名互相访问的 |
12
jarlyyn 2017-06-05 12:01:12 +08:00
制定 network 比较好用
|
13
beginor 2017-06-05 12:22:35 +08:00 via Android
@SlipStupig 就是按照 deepzz 的配置, 网络配好就行
|