Docker 容器编排利器 Docker Compose( 五 )


network_mode
设置网络模式 , 类似 docker run 时添加的参数 --net host 或者 --network host 的用法 。
 network_mode: "bridge" network_mode: "host" network_mode: "none" network_mode: "service:[service name]" network_mode: "container:[container name/id]"
networks
配置容器连接的网络 , 引用顶级 networks 下的条目 。
 # 定义服务 , 可以多个 services: nginx: # 服务名称   networks: # 配置容器连接的网络 , 引用顶级 networks 下的条目     - nginx-net # 一个具体网络的条目名称  # 定义网络 , 可以多个 。如果不声明 , 默认会创建一个网络名称为"工程名称_default"的 bridge 网络 networks: nginx-net: # 一个具体网络的条目名称   name: nginx-net # 网络名称 , 默认为"工程名称_网络条目名称"   driver: bridge # 网络模式 , 默认为 bridge
aliases
网络上此服务的别名 。同一网络上的其他容器可以使用服务名或此别名连接到服务容器 。同一服务在不同的网络上可以具有不同的别名 。
 # 定义服务 , 可以多个 services: nginx: # 服务名称   networks: # 配置容器连接的网络 , 引用顶级 networks 下的条目     nginx-net: # 一个具体网络的条目名称       aliases: # 服务别名 , 可以多个         - nginx1 # 同一网络上的其他容器可以使用服务名或此别名连接到服务容器 ? # 定义网络 , 可以多个 。如果不声明 , 默认会创建一个网络名称为"工程名称_default"的 bridge 网络 networks: nginx-net: # 一个具体网络的条目名称   name: nginx-net # 网络名称 , 默认为"工程名称_网络条目名称"   driver: bridge # 网络模式 , 默认为 bridge
volumes
通过顶级配置 services 的学习 , 大家应该已经明白顶级配置 volumes 是干嘛的了 , 这里再详细把配置的不同方式讲解一下 。
以下方式的数据卷声明创建卷时会使用默认的名称:"工程名称_数据卷条目名称" 。
 # 描述 Compose 文件的版本信息 version: "3.8" # 定义服务 , 可以多个 services: mysql:   image: mysql:8   container_name: mysql8   ports:     - "3306:3306"   environment     MYSQL_ROOT_PASSWORD: 1234   volumes:       # 具名挂载 , 就是给数据卷起了个名字 , 容器外对应的目录会在 /var/lib/docker/volume 中生成     - "mysql-data-volume:/var/lib/mysql" ? # 定义数据卷 , 可以多个 volumes: mysql-data-volume: # 一个具体数据卷的条目名称

Docker 容器编排利器 Docker Compose

文章插图
 
以下方式的数据卷声明创建卷时会使用自定义的名称 。
 # 描述 Compose 文件的版本信息 version: "3.8" # 定义服务 , 可以多个 services: mysql:   image: mysql:8   container_name: mysql8   ports:     - "3306:3306"   environment     MYSQL_ROOT_PASSWORD: 1234   volumes:       # 具名挂载 , 就是给数据卷起了个名字 , 容器外对应的目录会在 /var/lib/docker/volume 中生成     - "mysql-data-volume:/var/lib/mysql" ? # 定义数据卷 , 可以多个 volumes: mysql-data-volume: # 一个具体数据卷的条目名称   name: mysql-data-volume # 数据卷名称 , 默认为"工程名称_数据卷条目名称"
Docker 容器编排利器 Docker Compose

文章插图
 
networks
通过顶级配置 services 的讲解 , 大家其实已经明白顶级配置 volumes 是干嘛的了 , 这里再详细把配置的不同方式讲解一下 。
如果不声明网络 , 每个工程默认会创建一个网络名称为"工程名称_default"的 bridge 网络 。
 # 描述 Compose 文件的版本信息 version: "3.8" # 定义服务 , 可以多个 services: nginx:   image: nginx   container_name: mynginx   ports:     - "80:80" ? # 定义网络 , 可以多个 。如果不声明 , 默认会创建一个网络名称为"工程名称_default"的 bridge 网络 #networks:


推荐阅读