用docker compose可以批量管理容器,通过compose.yaml或compose.yml文件批量处理容器
命令用法
上线
docker compose up
下线
docker compose down
启动容器
docker compose start x1 x2 x3
停止容器
docker compose stop x1 x2 x3
扩容
启动3份x1应用
docker compose start x1=3
compose.yaml文件语法
可查看官网语法https://docs.docker.com/reference/compose-file/
顶级元素
name 名字
services 服务
networks 网络
volumes 卷
configs 配置
secrets 密钥
例子
#compose名字(可以没有)
name: test
services:
mysql:
#使用镜像
image: mysql
#容器名字
container_name: mysql
#开机自启
restart: always
#授予容器更高的权限
privileged: true
#端口映射
ports:
- "3306:3306"
#目录挂载(Linux系统写法)
volumes:
- /work/mysql/my.cnf:/etc/mysql/my.cnf
- /work/mysql/data:/var/lib/mysql
- /work/mysql/logs:/logs
#环境变量
environment:
- MYSQL_ROOT_PASSWORD=YmkjSoft2024..
#设定容器时区变量,确保容器内部时间跟本地时间一致
- TZ=Asia/Shanghai
#加入自定义网络
networks:
- dnetwork
minio:
#使用镜像
image: minio/minio
#容器名字
container_name: minio
#端口映射
ports:
- "9000:9000"
- "9001:9001"
#环境变量
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: admin123
TZ: Asia/Shanghai
#目录挂载(Windows系统写法)
volumes:
- D:\minio\data:/data
- D:\minio\config:/root/.minio
#容器启动时执行的命令
command: server --console-address ':9001' /data
#开机自启
restart: always
#加入自定义网络
networks:
- dnetwork
#mysql容器启动完后再启动
depends_on:
- mysql
#创建自定义网络
networks:
dnetwork:
#如果网络已经创建了添加下面配置
#external: true 指定这是一个外部网络
编写好compose文件后,执行命令启动对应容器
docker compose -f compose.yaml up -d
-f 指定目录的compose.yaml
-d 后台运行compose文件里的容器
不指定容器名启动所有容器,已经启动的容器配置没修改过就会跳过,配置修改过会重新创建容器