【笔记】Docker的Compose

前言

Compose可译为组合物。Compose 是用于定义和运行 多个容器Docker应用程序 的工具。通过Compose,你可以使用YAML文件来配置应用程序需要的所有服务,然后通过使用一个命令,就可以创建并启动所有服务。Compose对应的命令为docker-compose。(维基百科

下载依赖

  • 旧版本Docker需要单独安装docker-compose软件包
1
apt install docker-compose
  • 新版本Docker在安装时会携带compose插件

配置文件

  • 创建docker-compose.yml配置文件,作为容器的启动配置

定义配置文件版本

1
version: "2.1"

配置容器

指定镜像

通过DockerHub下载镜像
1
2
3
services:
<service_name>:
image: <image_name>:<tag>
1
2
3
services:
<service_name>:
image: registry.hub.docker.com/<image_name>:<tag>
通过Github下载镜像
1
2
3
services:
<service_name>:
image: ghcr.io/<image_name>:<branch>
通过Dockerfile手动编译镜像
1
2
3
services:
<service_name>:
build: .

配置容器名

1
2
3
4
services:
<service_name>:
image: <image_name>:<tag>
container_name: <container_name>

配置端口映射

1
2
3
4
5
services:
<service_name>:
image: <image_name>:<tag>
ports:
- <port_out>:<port_in>

配置数据卷映射

1
2
3
4
5
services:
<service_name>:
image: <image_name>:<tag>
volumes:
- <src_out>:<src_in>

配置环境变量

1
2
3
4
5
services:
<service_name>:
image: <image_name>:<tag>
environment:
- <key>=<value>

配置日志

1
2
3
4
5
6
7
8
services:
<service_name>:
image: <image_name>:<tag>
logging:
driver: "json-file"
options:
max-size: "1000k"
max-file: "20"

配置被链接的容器

  • 被链接的容器可以通过容器名和端口号的方式被当前容器访问
1
2
3
4
5
6
7
8
9
services:
<service_name>:
image: <image_name>:<tag>
environment:
- <key>=<service_name2>:<port>
links:
- <service_name2>
<service_name2>:
image: <image_name>:<tag>

配置被依赖的容器

  • 被依赖的容器会优先于当前容器启动
1
2
3
4
5
6
7
services:
<service_name>:
image: <image_name>:<tag>
depends_on:
- <service_name2>
<service_name2>:
image: <image_name>:<tag>

配置网络

配置新创建的网络

<network_type>:网络类型

bridge
host
none
macvlan

1
2
3
4
5
6
7
8
9
networks:
<network_name>:
driver: <network_type>

services:
<service_name>:
image: <image_name>:<tag>
networks:
- <network_name>
配置已存在的网络
1
2
3
4
5
6
7
8
9
10
networks:
<network_name>:
external: true

services:
<service_name>:
image: <image_name>:<tag>
networks:
<network_name>:
ipv4_address: <ip>

启用特权模式

1
2
3
4
services:
<service_name>:
image: <image_name>:<tag>
privileged: true

通过配置文件启动新容器

-d:后台运行

1
docker compose up

通过配置文件停止容器

1
docker compose stop

通过配置文件启动停止状态的容器

1
docker compose start

通过配置文件重启容器

1
docker compose restart

通过配置文件停止并删除容器

1
docker compose down

通过配置文件查看日志

-f:滚动查看

1
docker compose logs

完成

参考文献

CSDN——叽米
CSDN——WEL测试
CSDN——gold0523
CSDN——Kiloveyousmile
CSDN——九亿少女的梦@