Docker-Compose
官方文档:https://docs.docker.com/compose/
Docker-Compose 是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排
Compose 是一个用于定义和运行多个容器 Docker 应用程序的工具,使用 Compose,可以使用 YAML 格式的配置文件(docker-compose.yml)来配置应用程序的服务,写好多个容器之间的调用关系;然后,只要一个命令就能同时启动/关闭这些容器
下载并安装 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
如果您曾经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 -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 版本 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: