Kumu's wiki
  • SUMMARY
  • Docker
    • 理论概述
    • 安装入门
    • 配置说明
    • 基础命令
    • 镜像构建
    • 镜像存储
      • OverlayFS 存储驱动
      • Habor 安装和升级标注
    • Compose
      • Compose 概览
      • Compose 安装
      • Compose 入门
      • Compose 环境变量
      • Compose 服务扩展
      • Compose 网络
      • Compose 生产实践
      • Compose 启动顺序控制
  • Kubernetes
    • 架构概览
    • 基础术语
    • 集群构建
    • 工作负载
      • Deployments
      • StatefulSets
      • Volumes
      • Persistent Volumes
    • 集群调度
      • 亲和性和反亲和性
      • 污点和容忍机制
    • 集群组件
      • Kubelet
    • 网络方案
      • 网络策略
      • Calico BGP 网络(v2.6.x)
      • Kubelet CNI 源码解析
    • client-go
      • client-go 背后机制
    • Helm
      • Helm 架构
      • Helm 快速上手
      • Helm 使用
      • Helm 命令
    • Google 大规模集群管理器 Borg
由 GitBook 提供支持
在本页
  • 更新容器
  • Links
  • 指定自定义网络
  • 配置默认网络
  • 使用之前已存在的网络

这有帮助吗?

  1. Docker
  2. Compose

Compose 网络

上一页Compose 服务扩展下一页Compose 生产实践

最后更新于5年前

这有帮助吗?

默认 Compose 会给应用设置一个单独的网络。每个服务中的容器加入到默认的网络中,互相可以访问,并通过和容器名一样的主机名来服务发现。

注意:应用网络命名依赖项目名,项目名称基于当前所在目录名。可以通过 --project-name 选项或者 COMPOSE_PROJECT_NAME 环境变量来覆盖。

例如,你的 app 所在目录为 myapp,你的 docker-compose.yml 内容如下:

version: "3"
services:
  web:
    build: .
    ports:
      - "8000:8000"
  db:
    image: postgres
    ports:
      - "8001:5432"

当你运行 docker-compose up,会发生如下情况:

  • 1、一个命名为 myapp_default 的网络创建

  • 2、一个使用 web 配置的容器创建。它以 web 为名加入到 myapp_default 网络

  • 3、一个使用 db 配置的容器创建。它以 db 为名加入到 myapp_default 网络

现在每个容器都可以通过主机名 web 或 db 获取相应容器的 IP 地址。如 web 应用代码可以通过 postgres://db:5432 连接使用 Postgres 数据库。

更新容器

如果服务配置变更了,并且运行 docker-compose up 更新它,旧的容器会被移除,新的容器会以不同的 IP 地址但是相同的名字加入到网络。运行的容器可以使用名字连接到新的地址,但是旧的地址已经不再提供服务。

如果有任何容器与旧的容器连接,那么会被关闭。容器有责任检测这种情况,并再次查找名称重新连接。

Links

Links 允许定义额外的别名,通过该别名可以从另外一个服务访问服务。默认情况下,任何服务都可以通过服务名访问,不需要额外启用。接下来的例子中,db 服务可以被 web 以 db 和 database 主机名访问到:

version: "3"
services:

  web:
    build: .
    links:
      - "db:database"
  db:
    image: postgres
version: "3"
services:

  proxy:
    build: ./proxy
    networks:
      - frontend
  app:
    build: ./app
    networks:
      - frontend
      - backend
  db:
    image: postgres
    networks:
      - backend

networks:
  frontend:
    # Use a custom driver
    driver: custom-driver-1
  backend:
    # Use a custom driver which takes special options
    driver: custom-driver-2
    driver_opts:
      foo: "1"
      bar: "2"

配置默认网络

version: "3"
services:

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

networks:
  default:
    # Use a custom driver
    driver: custom-driver-1

使用之前已存在的网络

networks:
  default:
    external:
      name: my-pre-existing-network

Networking in Compose
指定自定义网络