docker-compose-部分笔记

菜鸟教程 docker-compose
官网

配置

version 指令

指定从 compose 的哪个版本开始制定.

yml 配置中的 build 指令

如:

1
2
3
4
5
6
build:
context:
dockerfile:
args:
labels:
target:

contest 指明目录所在位置.

dockerfile 指定构建镜像的 Dockerfile 文件名.

args 指明构建参数.

labels 设置构建镜像的标签.

command

覆盖容器启动的默认命令.
如:

1
command: ["bundle", "exec"]

container_name

指定容器名称:

1
container_name: name

depends_on

设置依赖关系:

1
2
3
4
5
6
7
8
9
10
service:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres

关于 networks

这个 networks 是和 services 是写在同一个层级的, 其作用是创建网络, 如:

1
2
3
4
5
6
7
8
9
10
services:
frontend:
image: awesome/webapp
networks:
- front-tier
- back-tier

networks:
front-tier:
back-tier:

这是官方的例子, 这里创建了两个网络 front-tierback-tier, frontend 这个服务也通过 networks 来加入网络.

ipam 是 IP Address Management, is the administration of DNS and DHCP. IPAM 是 planning, tracking, and managing the Internet Protocol address space used in network. 大致就是说用来管理 IP 地址.

Compose implementations 必须要提供 external connectivity to networks.

参考博文

参考1
参考2 含 docker-compose.yml 的详细解释
容器在创建时, 分配的 ip 可能不在一个网段内.

指定容器名称要用 container_name, 否则默认名称为:

1
当前目录名称_service下的服务名称_数字    

这个数字的规律暂时不清楚.

指定 networks 的名称:

1
2
3
networks:
A_Network:
name: this_is_the_name

利用 name 这个键值对.

如果不自定义 networks, docker 自己添加的 network 名称为:

1
目录名_default

如果是自定义, 如上面的 A_Network, 则名称为:

1
目录名_A_Network

若是添加了 name 键值对, 则为:

1
this_is_the_name

设定网络网段

1
2
3
4
5
networks:
my_network:
ipam:
config:
- subnet: 192.168.0.0/24

docker-compose-部分笔记
http://example.com/2022/10/05/docker-compose-部分笔记/
作者
Jie
发布于
2022年10月5日
许可协议