Docker-Compose
官方文档:https://docs.docker.com/compose/
Docker-Compose 是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排
Compose 是一个用于定义和运行多个容器 Docker 应用程序的工具,使用 Compose,可以使用 YAML 格式的配置文件(docker-compose.yml)来配置应用程序的服务,写好多个容器之间的调用关系;然后,只要一个命令就能同时启动/关闭这些容器
安装 docker-compose
下载并安装 Compose CLI 插件
# 依次执行以下命令
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
此命令下载最新版本的 Docker Compose(从 Compose 发布存储库)并在
$HOME
目录下为活动用户安装 Compose
对二进制文件应用可执行权限
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
或者,如果您选择为所有用户安装 Compose:
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
测试安装是否成功
docker compose version
卸载 docker-compose
如果您曾经curl
安装 Compose CLI 插件,要卸载它,请运行:
rm $DOCKER_CONFIG/cli-plugins/docker-compose
或者,如果您为所有用户安装了 Compose,请运行:
rm /usr/local/lib/docker/cli-plugins/docker-compose
您还可以使用:
docker info --format '{{range .ClientInfo.Plugins}}{{if eq .Name "compose"}}{{.Path}}{{end}}{{end}}'
检查 Compose CLI 插件的位置
docker-compose 使用步骤
- 编写 Dockerfile 定义各个微服务应用并构建出对应的镜像文件
- 使用 docker-compose.yml 定义一个完整业务单元,安排好整体应用中的各个容器服务
- 执行 docker-compose up 命令来启动并运行整个应用程序,完成一键部署上线
docker-compose 常用命令
# 查看帮助
docker-compose -h
# 启动所有 docker-compose 服务
docker-compose up
# 后台启动所有 docker-compose 服务
docker-compose up -d
# 后台强制启动 docker-compose 中的某个服务
docker-compose up --force-recreate -d 服务名
# 停止并删除容器、网络、卷、镜像
docker-compose down
# 进入容器实例内部
docker-compose exec yml里面的服务id或服务名 /bin/bash
# 展示当前 docker-compose 编排过的运行的所有容器
docker-compose ps
# 展示当前 docker-compose 编排过的容器进程
docker-compose top
# 查看容器输出日志
docker-compose logs yml里面的服务id或服务名
# 检查配置
docker-compose config
# 检查配置,有问题才输出(启动 docker-compose 前可以通过该命令检查 yml 语法是否存在错误)
docker-compose config -q
# 重启服务(不写服务id或服务名则重启所有服务)
docker-compose restart 服务id或服务名
# 启动服务(不写服务id或服务名则启动所有服务)
docker-compose start 服务id或服务名
# 停止服务(不写服务id或服务名则停止所有服务)
docker-compose stop 服务id或服务名
docker-compose.yml 文件案例说明
# docker-compose 版本
version:"3"
services:
# 服务名称
microService:
# 构建服务使用的镜像名
image: boot-server:1.1
# 容器名称(不写则自动生成)
container_name: docker-compose-test
# 端口映射
ports:
- "6001:6001"
# 容器数据卷
volumes:
- /app/microService:/data
# 服务所使用的网络模式
networks:
- net01
# 依赖了哪些其他服务
depends_on:
- reids
- mysql
redis:
image: redis:6.0.8
ports:
- "6379:6379"
volumes:
- /app/redis/redis.conf:/etc/redis/redis.conf
- /app/redis/data:/data
networks:
- net01
# 容器启动执行的命令
command: redis-server /etc/redis/redis.conf
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: '123456'
MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
MYSQL_DATABASE: 'db2021'
MYSQL_USER: 'user'
MYSQL_PASSWORD: '123'
ports:
- "3306:3306"
volumes:
- /app/mysql/db:/var/lib/mysql
- /app/mysql/conf/my.cnf:/etc/my.cnf
- /app/mysql/init:/docker-entrypoint-initdb.d
networks:
- net01
# 解决外部无法访问
command: --default-authentication-plugin=mysql_native_password
# 网络配置
networks:
# 如果 net01 网络模式不存在则自动创建该网络
net01:
原创文章,作者:3628473679,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/272971.html