CentOS 7 Linux 离线安装 docker-compose
CentOS 7 Linux 离线安装 docker-compose
1. docker-compose 简介
1.1. docker-compose 是什么?
docker-compose
是 Docker 官方提供的工具,用于定义和运行多容器 Docker 应用程序。通过一个 YAML
文件(通常为 docker-compose.yml
),可以配置多个服务、网络、卷等资源,并使用一条命令启动或停止整个应用。
Docker Compose 官方标志
主要功能:
- 启动、停止、重建服务
- 查看并管理服务日志
- 配置网络和数据卷
- 支持环境变量配置,提高灵活性
适用场景:
适用于需要同时运行多个容器化服务的场景,例如微服务架构、前后端分离项目等。
官方文档: https://docs.docker.com/compose/
1.2. docker-compose.yml
文件示例
以下是一个前后端分离项目的 docker-compose.yml
示例文件,适用于:
- 前端:Vue 项目,使用 Nginx 部署
- 后端:Java 项目,使用 JDK 镜像部署
- 数据库:MySQL
docker-compose.yml
文件内容
version: '3.8'services:# Nginx(前端)nginx:image: nginx:1.24container_name: frontendports:- "80:80"volumes:- ./nginx/html:/usr/share/nginx/html- ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf- ./nginx/logs:/var/log/nginxrestart: unless-stoppednetworks:- app-network# Java 后端服务backend:image: openjdk:8-jdkcontainer_name: backendports:- "8080:8080"volumes:- ./backend/app.jar:/app.jar- ./backend/logs:/logsentrypoint: ["java", "-jar", "/app.jar"]environment:- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/mydb- SPRING_DATASOURCE_USERNAME=root- SPRING_DATASOURCE_PASSWORD=123456depends_on:- mysqlrestart: unless-stoppednetworks:- app-network# MySQL 数据库mysql:image: mysql:5.7container_name: mysqlports:- "3306:3306"environment:MYSQL_ROOT_PASSWORD: rootMYSQL_DATABASE: mydbvolumes:- ./mysql/data:/var/lib/mysql- ./mysql/conf:/etc/mysql/conf.d- ./mysql/logs:/var/log/mysqlcommand: mysqld --general-log=1 --general_log_file=/var/log/mysql/general.logrestart: unless-stoppednetworks:- app-networknetworks:app-network:driver: bridge
1.3. 为什么需要安装 docker-compose
?
在某些场景下,即使系统中已安装了 docker compose
(CLI 插件),我们仍然有必要单独安装 docker-compose
(独立二进制程序),主要原因包括:
- 兼容老旧项目:许多老项目使用的是 v1 版本的
docker-compose.yml
文件,而新版docker compose
不再支持该格式。 - 离线环境限制:某些环境中无法通过插件机制安装
docker compose
,但可以手动安装docker-compose
。 - 系统版本限制:一些旧版 Docker 或 Linux 系统不支持 CLI 插件机制,只能使用独立版本的
docker-compose
。 - 脚本和自动化工具依赖:部分运维脚本或 CI/CD 流水线依赖于
docker-compose
命令,切换成本较高。
docker-compose
与 docker compose
对比表
对比项 | docker-compose (独立程序) | docker compose (CLI 插件) |
---|---|---|
实现方式 | Python 编写,需单独下载安装 | Go 编写,作为 Docker CLI 插件安装 |
是否依赖 Docker CLI | 否 | 是 |
性能 | 相对较慢(Python 解释执行) | 更快(Go 编译执行) |
支持 Compose 文件版本 | v1、v2、v3(默认兼容性更好) | v2、v3(不支持 v1) |
推荐用于 | 老项目、v1 格式项目、离线环境 | 新项目、现代 CI/CD、多平台构建等高级功能 |
是否支持 Buildx 等新特性 | ❌ 不支持 | ✅ 支持 |
是否可与 Docker CLI 深度集成 | ❌ 否 | ✅ 是 |
支持的 Docker 版本说明
工具 | 最低支持 Docker 版本 |
---|---|
docker-compose (独立程序) | Docker Engine 1.10+ |
docker compose (CLI 插件) | Docker Engine 20.10+ |
⚠️ 注意:
docker compose
插件要求 Docker CLI 支持插件机制,通常从 Docker 20.10 开始引入。
支持的 docker-compose.yml
文件版本说明
Compose 文件版本 | 是否被 docker-compose 支持 | 是否被 docker compose 支持 |
---|---|---|
v1 (无 version: 字段) | ✅ 是 | ❌ 否 |
v2 | ✅ 是 | ✅ 是 |
v3 | ✅ 是 | ✅ 是 |
v3.x (如 v3.8) | ✅ 是 | ✅ 是(推荐) |
👉 特别注意:
v1
是隐式格式,没有version:
字段,仅docker-compose
可识别;docker compose
默认从v2
开始支持,官方已不再维护对 v1 的支持。
是否需要单独安装 docker-compose
?
使用场景 | 是否需要安装 docker-compose |
---|---|
需要运行 v1 格式的项目 | ✅ 必须安装 |
使用旧版 Docker 或 Linux 系统 | ✅ 建议安装 |
在离线环境下部署 | ✅ 建议安装 |
所有项目均为 v2/v3 格式 | ❌ 可不安装 |
使用新版 Docker CLI 并希望统一管理 | ❌ 可只用 docker compose |
因此,在兼顾新旧项目、保障兼容性和灵活性的前提下,建议在安装 docker compose
的同时,也保留一份 docker-compose
,以应对各种复杂环境和历史遗留问题。
2. 准备工作
2.1. 拥有一台 Centos Linux 机器
参考文章:
《VMware 安装 Centos 7 Linux 虚拟机》(文章中有B站视频教程链接):
https://blog.csdn.net/qq_36462452/article/details/127148440
2.2. 离线安装好 Docker
参考文章:
《CentOS 7 Linux 离线安装 Docker》(文章中有B站视频教程链接):
https://blog.csdn.net/qq_36462452/article/details/149233563
2.3. 下载 docker-compose
由于我们是在 离线环境下安装,你需要在一台有网络连接的机器上下载 docker-compose
的二进制文件,然后上传到目标 CentOS 服务器上。
步骤如下:
-
获取系统架构信息
在有网络的 Linux 主机上执行以下命令,获取当前系统的架构信息:
uname -m
常见输出包括:
x86_64
(即 AMD64)aarch64
(ARM64)
-
下载 docker-compose 可执行文件
使用浏览器下载该文件:
https://github.com/docker/compose/releases/download/v2.37.3/docker-compose-linux-x86_64
链接内容说明:
(1)版本选择:考虑到稳定性,我们选择使用上一个次版本号下最后一个修订号。(如当前最新版本号是
v2.38.2
,次版本号是v2.38
,上一个次版本号是v2.37
,v2.37.x
下最后一个修订号是v2.37.3
,则下载v2.37.3
)(2)架构信息匹配:上一步获取的架构信息是
x86_64
,因此下载的二进制文件名称为docker-compose-linux-x86_64
。(3)如需浏览其他版本或其他架构的可执行文件,请访问 https://github.com/docker/compose/releases
-
上传至目标服务器
将下载好的
docker-compose-linux-***
文件上传至你的 CentOS 7 目标主机,建议路径为/tmp
。
3. 离线安装
-
移动并重命名 docker-compose 文件
将下载好的docker-compose-linux-x86_64
文件移动到/usr/local/bin/
目录,同时重命名为docker-compose
:sudo mv /tmp/docker-compose-linux-x86_64 /usr/local/bin/docker-compose
-
赋予执行权限
给docker-compose
添加可执行权限:sudo chmod +x /usr/local/bin/docker-compose
-
验证安装是否成功
输入以下命令查看docker-compose
版本信息:docker-compose --version
如果输出类似如下信息,则表示安装成功:
Docker Compose version v2.37.3
4. 使用手册
注意:
- 所有命令需在
docker-compose.yml
所在目录下执行 - 确保 Docker 已启动:
systemctl status docker
- 若使用非 root 用户操作 Docker 和 Docker Compose,需将用户加入
docker
用户组:sudo usermod -aG docker <username>
4.1. 常用命令说明
命令 | 说明 |
---|---|
docker-compose up | 启动所有服务(前台模式) |
docker-compose up -d | 启动所有服务(后台守护模式) |
docker-compose down | 停止并删除容器、网络、挂载卷等资源 |
docker-compose ps | 显示当前项目中所有服务的状态 |
docker-compose logs | 查看服务的日志输出 |
docker-compose stop | 停止正在运行的服务 |
docker-compose start | 启动已停止的服务 |
docker-compose restart | 重启服务 |
docker-compose build | 构建或重新构建服务镜像 |
docker-compose pull | 拉取服务所依赖的镜像(需在线) |
docker-compose config | 验证并显示 compose 文件内容 |
docker-compose images | 列出项目中使用的所有镜像 |
docker-compose kill | 强制停止服务容器 |
4.2. 命令参数详解(按命令分类展开说明)
4.2.1. docker-compose up
docker-compose up [OPTIONS] [SERVICE...]
-d
,--detach
:以后台模式启动容器。--build
:在启动前强制构建镜像。--force-recreate
:即使配置未更改,也强制创建新容器。--no-build
:不自动构建镜像。--remove-orphans
:删除不在 Compose 文件中定义的服务容器。--scale SERVICE=NUM
:指定某个服务启动的容器数量。
4.2.2. docker-compose down
docker-compose down [OPTIONS]
-v
,--volumes
:删除绑定的数据卷。--rmi all
:删除由 Compose 创建的所有镜像。--rmi local
:仅删除本地自定义镜像。-t
,--timeout TIMEOUT
:设置停止容器时等待的秒数,默认为 10 秒。
4.2.3. docker-compose ps
docker-compose ps [OPTIONS] [SERVICE...]
-a
,--all
:显示所有状态的服务,包括非运行状态的。--services
:只列出服务名称。--filter "key=value"
:按条件过滤输出,如status=running
。
4.2.4. docker-compose logs
docker-compose logs [OPTIONS] [SERVICE...]
-f
,--follow
:实时追踪日志输出。--tail="all"
:显示所有历史日志;也可指定行数,如--tail=100
。--timestamps
,-t
:显示时间戳。--no-color
:禁用颜色高亮。
4.2.5. docker-compose stop
docker-compose stop [OPTIONS] [SERVICE...]
-t
,--timeout
:指定优雅关闭的等待时间(单位:秒)。
4.2.6. docker-compose start
docker-compose start [SERVICE...]
无额外选项,直接启动已存在的容器。
4.2.7. docker-compose restart
docker-compose restart [OPTIONS] [SERVICE...]
-t
,--timeout
:指定重启前停止容器的等待时间。
4.2.8. docker-compose build
docker-compose build [OPTIONS] [SERVICE...]
--pull
:构建前拉取基础镜像最新版本。--no-cache
:忽略缓存,从头开始构建。--force-rm
:构建过程中删除临时容器。
4.2.9. docker-compose config
docker-compose config [OPTIONS]
--resolve-image-digests
:解析镜像标签为摘要信息。--quiet
,-q
:静默模式,不输出内容。--services
:仅输出服务名称列表。--volumes
:仅输出卷名称列表。
4.2.10. docker-compose images
docker-compose images [OPTIONS] [SERVICE...]
- 无特殊选项,用于查看服务所使用的镜像。