docker-compose介绍和 离线安装部署(Linux 环境)
二进制文件,通过 U 盘、内网等方式传输到离线机器。的安装,并通过常用命令管理多容器应用的生命周期。通过上述步骤,可在离线环境完成。
文章目录
一、docker-compose 概述
docker-compose 是 Docker 官方推出的用于定义和运行多容器 Docker 应用的工具。它通过一个 YAML 格式的配置文件(默认 docker-compose.yml)集中描述应用所需的所有服务(容器)、网络、数据卷等依赖关系,再通过简单的命令实现多容器的批量创建、启动、停止、重启等全生命周期管理,解决了多容器协同部署的复杂性问题。
二、docker-compose 的优点
-
简化多容器配置
用一个docker-compose.yml文件定义所有容器的参数(镜像、端口、依赖等),避免手动执行冗长的docker run命令,配置可纳入版本控制,便于团队协作。 -
统一生命周期管理
一条命令(如docker-compose up)即可启动所有关联服务,无需逐个操作容器,大幅降低操作成本。 -
自动处理依赖与网络
通过depends_on定义服务启动顺序,默认创建桥接网络,容器间可通过服务名直接通信(无需手动配置 IP)。 -
环境一致性
配置文件可在开发、测试、生产环境复用,确保不同环境的容器配置一致,避免“在我电脑上能运行”的问题。 -
支持批量操作
可同时对所有服务执行启动、停止、重启、日志查看等操作,也可针对单个服务进行精细化管理(如docker-compose restart web)。
三、docker-compose 的缺点
-
仅限单机部署
主要用于单机环境的多容器管理,无法支持跨主机的集群部署(需依赖 Docker Swarm 或 Kubernetes 等工具)。 -
版本兼容性问题
配置文件的version字段需与docker-compose版本严格匹配,不同版本语法可能存在差异,升级时需注意兼容性。 -
依赖管理局限性
depends_on仅保证启动顺序,不保证依赖服务“就绪”(如数据库启动但未初始化完成时,应用可能连接失败),需额外通过健康检查或脚本处理。 -
不适合大规模应用
对于包含数十个以上容器的复杂应用,配置文件会变得庞大,管理和维护成本增加,此时更适合 Kubernetes 等容器编排平台。
四、docker-compose 离线安装(Linux 环境)
在无网络环境中安装 docker-compose,需提前在有网络的机器上准备二进制文件,再传输到离线环境部署,步骤如下:
1. 提前在有网络的机器上下载二进制文件
# 1. 查看最新版本:https://github.com/docker/compose/releases,替换 VERSION
VERSION="v2.24.6"
# 2. 下载对应系统架构的二进制文件(Linux x86_64 为例)
curl -L "https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-Linux-x86_64" -o docker-compose
# 3. 赋予执行权限
chmod +x docker-compose
此时会生成 docker-compose 二进制文件,通过 U 盘、内网等方式传输到离线机器。
2. 在离线机器上安装
# 1. 将二进制文件移动到系统可执行目录(全局可用)
sudo mv docker-compose /usr/local/bin/
# 2. (可选)创建软链接(部分系统需要)
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 3. 验证安装
docker-compose --version
# 成功输出:docker-compose version 2.24.6, build 5f4c08e1
五、docker-compose 常用命令
| 命令 | 作用 | 示例 |
|---|---|---|
| 启动服务 | ||
docker-compose up |
前台启动所有服务(日志输出到终端) | docker-compose up |
docker-compose up -d |
后台启动所有服务(推荐) | docker-compose up -d |
docker-compose up -d --build |
启动时重新构建自定义镜像 | docker-compose up -d --build web |
| 停止服务 | ||
docker-compose stop |
停止所有运行中的服务(容器保留) | docker-compose stop |
docker-compose stop <服务名> |
停止指定服务 | docker-compose stop db |
docker-compose down |
停止并删除所有服务、网络(数据卷保留) | docker-compose down |
docker-compose down --volumes |
停止并删除所有服务、网络及数据卷 | docker-compose down --volumes |
| 查看状态 | ||
docker-compose ps |
查看所有服务的运行状态 | docker-compose ps |
docker-compose ps <服务名> |
查看指定服务状态 | docker-compose ps web |
| 日志查看 | ||
docker-compose logs |
查看所有服务的日志 | docker-compose logs |
docker-compose logs -f |
实时跟踪所有服务日志 | docker-compose logs -f |
docker-compose logs -f <服务名> |
实时跟踪指定服务日志 | docker-compose logs -f db |
| 容器操作 | ||
docker-compose exec <服务名> <命令> |
进入指定容器执行命令(如 bash) | docker-compose exec web bash |
docker-compose restart |
重启所有服务 | docker-compose restart |
docker-compose restart <服务名> |
重启指定服务 | docker-compose restart web |
| 镜像操作 | ||
docker-compose build |
构建所有自定义镜像 | docker-compose build |
docker-compose build <服务名> |
构建指定服务的镜像 | docker-compose build app |
docker-compose build --no-cache |
不使用缓存重新构建 | docker-compose build --no-cache |
| 其他实用命令 | ||
docker-compose config |
验证配置文件语法并输出 | docker-compose config |
docker-compose images |
列出所有服务使用的镜像 | docker-compose images |
docker-compose top |
查看服务容器内的进程 | docker-compose top |
六、离线环境使用注意事项
- 离线环境中,
docker-compose依赖的镜像需提前通过docker save导出,再在离线机器用docker load导入(避免联网拉取)。 - 配置文件
docker-compose.yml中指定的镜像标签(如nginx:latest)必须与导入的镜像标签完全一致,否则会启动失败。 - 若需更新应用,需重复“有网环境准备新镜像/代码 → 离线传输 → 导入镜像 → 重启服务”流程。
通过上述步骤,可在离线环境完成 docker-compose 的安装,并通过常用命令管理多容器应用的生命周期。
更多推荐

所有评论(0)