docker-compose 之网络

好风 发表于 2016-12-14T07:59:23.160451Z
引用地址:https://plus.ooclab.com/note/article/1321

默认情况下, docker-compose 为每个 app 创建一个独立的网络。service 中的所有 container 都加入该网络, 并且相互直接可以通过 hostname 发现。

注意 网络名称由 app 所在目录名称决定,可以使用 --project-nameCOMPOSE_PROJECT_NAME 变量指定。

本文测试环境:

  • docker 1.12.4
  • docker-compose 1.9.0

举例

目录 myapp 中的 docker-compose.yml 内容如下

version: '2'

services:
  web:
    build: .
    ports:
      - "8000:8000"
  db:
    image: postgres

docker-compose 会:

  1. 创建名为 myapp_default 的网络
  2. web 容器和 db 容器都加入 myapp_default 网络
  3. web 容器中可以使用 db:5432 访问 db 服务,db 容器中也可以使用 web:8000 访问服务。

指定网络

使用 host 网络:

version: '2'
services:
    web1:
        image: nginx
        network_mode: host
    redis1:
        image: redis
        network_mode: host

注意 使用 host 网络,容器内部就不可以使用 hostname 发现其他容器服务。