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-composedocker 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 服务器上。

步骤如下:
  1. 获取系统架构信息

    在有网络的 Linux 主机上执行以下命令,获取当前系统的架构信息:

    uname -m
    

    常见输出包括:

    • x86_64(即 AMD64)
    • aarch64(ARM64)
  2. 下载 docker-compose 可执行文件

    使用浏览器下载该文件:

    https://github.com/docker/compose/releases/download/v2.37.3/docker-compose-linux-x86_64

    链接内容说明:

    (1)版本选择:考虑到稳定性,我们选择使用上一个次版本号下最后一个修订号。(如当前最新版本号是v2.38.2,次版本号是v2.38,上一个次版本号是v2.37v2.37.x 下最后一个修订号是v2.37.3,则下载 v2.37.3

    (2)架构信息匹配:上一步获取的架构信息是 x86_64,因此下载的二进制文件名称为 docker-compose-linux-x86_64

    (3)如需浏览其他版本或其他架构的可执行文件,请访问 https://github.com/docker/compose/releases

    在这里插入图片描述

  3. 上传至目标服务器

    将下载好的 docker-compose-linux-*** 文件上传至你的 CentOS 7 目标主机,建议路径为 /tmp

3. 离线安装

  1. 移动并重命名 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
    
  2. 赋予执行权限
    docker-compose 添加可执行权限:

    sudo chmod +x /usr/local/bin/docker-compose
    
  3. 验证安装是否成功
    输入以下命令查看 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...]
  • 无特殊选项,用于查看服务所使用的镜像。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/89087.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/89087.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/89087.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

排序算法实战(上)

一、引言在力扣刷题的旅程中&#xff0c;排序类题目是绕不开的重要板块。今天就来分享两道经典排序题——912. 排序数组和75. 颜色分类的解题思路与代码实现&#xff0c;带你深入理解排序算法在实际题目中的应用 。二、题目剖析与解题思路&#xff08;一&#xff09;912. 排序数…

python学智能算法(二十)|SVM基础概念-感知机算法及代码

引言 前序学习进程中&#xff0c;已经学习了超平面的基础知识&#xff0c;学习链接为&#xff1a;超平面 在此基础上&#xff0c;要想正确绘制超平面&#xff0c;还需要了解感知机的相关概念。 感知机 感知机是对生物神经网络的模拟&#xff0c;当输入信号达到感知机的阈值时…

操作HTML网页

一、HTML网页的介绍 HTML&#xff0c;即超文本标记语言&#xff08;HyperText Markup Language&#xff09;&#xff0c;它不是一种编程语言&#xff0c;而是一种标记语言&#xff0c;用于描述网页的结构。HTML 通过一系列标签来定义网页中的各种元素&#xff0c;如文本、图片…

Django--03视图和模板

Django–03视图和模板 Part 3: Views and templates 本教程承接第二部分&#xff0c;我们将继续开发投票应用&#xff0c;重点介绍 Django 的表单处理和通用视图。 文章目录Django--03视图和模板前言概述一、编写更多视图二、编写实际执行操作的视图三、快捷方式&#xff1a;r…

《每日AI-人工智能-编程日报》--2025年7月15日

介绍&#xff1a;AI &#xff1a;英伟达恢复向中国销售 H20 并推出新 GPU&#xff1a;7 月 15 日&#xff0c;英伟达官宣将恢复向中国销售 H20&#xff0c;并推出全新的 NVIDIA RTX PRO GPU&#xff0c;其中 B30 性能约为 H20 的 75%&#xff0c;定价在 6500 至 8000 美元之间&…

C++STL-list

一.基础概念相当于数据结构里面的双向链表二.基础操作1.list对象创建1. 默认构造函数list<int> l1;2. 初始化列表list<int> l2_1 { 9,8,7,6,5 };list<int> l2_2({ 9, 8, 7, 1, 5 });3. 迭代器list <int> l3(l2_1.begin(), l2_1.end());4. 全0初始化li…

【PTA数据结构 | C语言版】字符串插入操作

本专栏持续输出数据结构题目集&#xff0c;欢迎订阅。 文章目录题目代码题目 请编写程序&#xff0c;将给定字符串 t 插入到另一个给定字符串 s 的第 pos 个字符的位置。 输入格式&#xff1a; 输入先后给出主串 s 和待插入的字符串 t&#xff0c;每个非空字符串占一行&#…

Postman + Newman + Jenkins 接口自动化测试

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 </

CAS单点登录架构详解

目录 概述核心概念 TGC (Ticket Granting Cookie)TGT (Ticket Granting Ticket)ST (Service Ticket) 架构设计 整体架构存储架构安全机制 工作流程 完整登录时序流程步骤详解 技术实现 会话管理数据同步问题最佳实践 参考资料 概述 CAS (Central Authentication Service) 是…

C++中正则表达式详解和实战示例

C 中的正则表达式&#xff08;Regular Expression&#xff09;主要通过标准库 <regex> 提供&#xff0c;能够用于字符串匹配、查找、替换、验证格式等。它在 C11 中首次引入&#xff0c;并在 C14 和 C17 中逐步完善。一、头文件和命名空间 #include <regex> #inclu…

深入解析Avro、Protobuf与JSON:序列化技术的选择与应用

在现代分布式系统和数据交换场景中&#xff0c;序列化技术是数据存储、传输和通信的核心。本文深入探讨三种主流序列化技术&#xff1a;Avro、Protobuf 和 JSON&#xff0c;从背景、特点、示例代码&#xff08;Python&#xff09;、优势及最佳实践等多个维度进行对比分析&#…

Vue 中 effectScope() 的全面解析与实战应用

一、effectScope 概述1.1 什么是 effectScopeeffectScope() 是 Vue 3.2 引入的核心 API&#xff0c;用于创建副作用作用域容器。它能够将多个响应式副作用&#xff08;如 watch、watchEffect 和 computed&#xff09;组织在一起&#xff0c;实现统一的生命周期管理。1.2 核心价…

嵌入式面试八股文(十六)·一文搞懂嵌入式常用名词IC、ASIC、CPU、MPU、MCU、SoC、SoPC、GPU、DSP

目录 1. IC&#xff08;Integrated Circuit&#xff0c;集成电路&#xff09; 2. ASIC&#xff08;Application-Specific Integrated Circuit&#xff0c;专用集成电路&#xff09; 3. CPU&#xff08;Central Processing Unit&#xff0c;中央处理器&#xff09; 4. M…

安全参綉25暑假第一次作业

第一天 1.首先讲了d0cker的部署&#xff0c; 这个是第一个Vulhub漏洞环境。所有环境都使用D0cker容器化&#xff0c;使其易于部署和隔离测试。 其中&#xff0c;国内的阿里用不了&#xff0c;你得搞个代理&#xff0c;下国外的&#xff1a;入门指南 | Vulhub 然后按这个…

RocketMQ源码级实现原理-消息消费总览

Overview可以看到&#xff0c;pull message和consume message实际上是两个过程&#xff0c;但是对于用户是透明的 注意这三个Offset的含义&#xff0c;physical offset就是commitLog中的全局偏移量分发dispatch如上图&#xff0c;Topic的每个queue&#xff0c;都绑定了唯一的一…

linux打包固件shell脚本

不打包 pack.sh解压后无父目录&#xff08;直接是文件&#xff09;生成 checksum.txt&#xff08;包含所有文件的 SHA256&#xff09;打包后 .tar.gz 移动到上级目录#!/bin/bash# 检查是否传入版本号参数 if [ -z "$1" ]; thenecho "Usage: $0 <version> …

用uniapp开发鸿蒙应用(暂停更新-根据项目更新,现在项目未开始)

1.根据博客生成.hap文件 【鸿蒙HarmonyOS开发技巧&#xff1a;如何不依赖华为商店直接安装uniapp生成的app文件&#xff1f;一键转换app至hap格式教程详解】_entry-default-signed.hap-CSDN博客 根据网络查询鸿蒙手机安装测试app&#xff0c;需要电脑命令安装 在鸿蒙HarmonyOS手…

Linux 文件系统实现层详解:原理、结构与驱动衔接

&#x1f4c2; Linux 文件系统实现层详解&#xff1a;原理、结构与驱动衔接 &#x1f3ac; 推荐搭配视频学习&#xff1a;Linux 文件系统子系统&#xff1a;三层架构全面掌握 一、为什么要重点理解文件系统实现层&#xff1f; 文件系统实现层是 Linux 文件系统的“地基”&…

区块链应用场景深度解读:金融领域的革新与突破

引言&#xff1a;区块链技术的演进与金融领域的变革区块链技术自2008年诞生以来&#xff0c;以其去中心化、不可篡改、可追溯等特性&#xff0c;在全球范围内引发了金融领域的深刻变革。从最初的数字货币实验&#xff0c;到如今在跨境支付、证券交易、供应链金融等领域的广泛应…

redisson tryLock

应用场景RLock rLock redissonClient.getLock(Constant_LOCK request.getId()); try {boolean isLocked rLock.tryLock();if (!isLocked) {throw new ServiceException(ErrConstant.OPERATION_FAILED, "请勿重复提交");}源码public interface RLock extends Lock,…