Docker-Compose: 容器部署
Docker-Compose
docker-compose.yml
docker-compose.yml是唯一的必需文件version:docker-compose版本声明services:服务定义networks:网络定义(可选)volumes:卷定义(可选)configs:配置定义(可选)secrets:密钥定义(可选)
services配置
子字段均是自定义的服务名称
自定义的服务名称下是主要需要配置的
image:镜像名+标签(默认为latest),也可使用私有仓库的镜像alpine标签通常是及其轻便的,适用于容器化部署默认则是
latest标签build:除了image还可以使用build,即从Dockerfile构建:context:Dockerfile所在目录dockerfile:Dockerfile文件名args:构建参数
通用配置:
container_name:容器名hostname:主机名ports:端口映射,是一个数组(宿主机port:容器port)working_dir:工作目录depends_on:依赖其它服务,是一个数组networks:自定义网络引用,是一个数组volumes:自定义卷引用,是一个数组,每个元素是卷引用:数据地址command:覆盖默认的启动命令,是一个数组environment:注入环境变量env_file:从文件注入环境变量restart:重启策略,包括"no"、always、on-failure、unless-stoppeduser:指定运行的用户和用户组group_add:附加额外的用户组,是一个数组logging:日志分割配置时,需要主动覆盖,设置logging.driver为json-file并设置logging.options.max-size(每个文件最大大小)和max-file(最多保留文件个数)
networks配置
- 子字段均是自定义的网络名称
- 只写网络名称是最常用的,默认
driver为bridge
volumes配置
- 子字段均是自定义的卷名称
- 只写卷名称是最常用的,默认
driver为local - 可以在
hub.docker.com/_/mysql查询数据存放的目录 docker inspect container_name:latest --format='{{json .Config.Volumes}}' | python -m json.tool也适用于大多数容器的数据卷映射建议
常用docker-compose命令
docker-compose up -d [services]:启动,-d为--daemon,可指定services只启动部分服务docker-compose ps [-a] [services]:查看运行状态,-a为查看详细信息,可指定services只查看部分服务docker-compose logs [services]:查看日志docker-compose down:关闭并删除所有容器和服务,可附加-v把卷同时删除docker-compose stop [services]:关闭服务,保留容器docker-compose restart [services]:配合stop使用,重启服务docker-compose exec service_name sh_name:指定sh和服务名称进入该容器docker compose:这是Docker Compose v2的命令,上述均为v1的