当前位置: 首页 > news >正文

CentOS7上下载安装 Docker Compose

Docker Compose简要介绍(想直接看安装步骤的请跳转到[必要的安装步骤])

Docker Compose 是一个用于定义和管理多容器 Docker 应用的工具,它可以通过一个简单的 YAML 文件(docker-compose.yml)来配置应用程序的服务、网络和存储等内容,并通过一条命令来启动、停止和管理多个容器。

Docker Compose的主要功能:
  1. 简化多容器应用的管理

    • 通过 docker-compose.yml 文件,开发者可以定义一组相关联的容器,例如数据库、后端服务、前端服务等。
    • 只需使用一条 docker-compose up 命令,就可以启动这些容器,并且可以自动处理它们之间的网络连接和数据卷。
  2. 定义服务、网络、存储

    • Docker Compose 允许你在 docker-compose.yml 中定义应用的服务(如 web、db)、网络和存储卷,所有配置都集中在一个文件中,便于管理。
  3. 环境隔离

    • 可以为每个项目创建独立的环境,避免不同项目间的依赖冲突。不同的应用或环境可以在不同的 Docker Compose 项目中独立运行。
  4. 扩展性

    • 可以轻松扩展某个服务的实例数。例如,如果需要扩展 web 服务的处理能力,可以简单调整实例数量:docker-compose up --scale web=3

docker-composedocker compose 的区别:

  • docker-compose(v1.x 版本)

    • 是一个独立的二进制文件,用于管理多容器应用。
    • 使用的是命令 docker-compose
  • docker compose(v2.x 版本)

    • 是作为 Docker CLI 插件引入的,直接内置到 Docker 工具链中,官方推荐使用。
    • 使用的是命令 docker compose(没有连字符),并且相比 v1 版本有更好的性能和集成。

常用命令:

  • 启动所有服务:

    docker-compose up
    
  • 在后台启动服务(使用 -d 表示守护模式):

    docker-compose up -d
    
  • 停止并移除所有容器:

    docker-compose down
    
  • 查看当前运行的容器:

    docker-compose ps
    
  • 查看日志:

    docker-compose logs
    

docker-compose.yml 示例:

version: '3'
services:web:image: nginxports:- "80:80"db:image: mysqlenvironment:MYSQL_ROOT_PASSWORD: examplevolumes:- db-data:/var/lib/mysql
volumes:db-data:

这个文件定义了两个服务:web(使用 Nginx)和 db(使用 MySQL),并且将 MySQL 数据存储在一个名为 db-data 的 Docker 卷中。

总结来说,Docker Compose 是一个强大且简化 Docker 多容器应用管理的工具,特别适用于开发、测试和小型生产环境。


必须的安装步骤:

  1. 安装 Docker Compose

    • 下载 Docker Compose 二进制文件:

      sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
      

      1.29.1为版本号,按自己的需要来选择就好,新手如果不知道怎么选,可以参考后文的下载版本的选择部分的内容

    • 赋予可执行权限:

      sudo chmod +x /usr/local/bin/docker-compose
      
    • 测试安装是否成功:

      docker-compose --version
      

    至此,就完成了 Docker Compose 的安装过程。

  2. (可选)Docker 开启远程访问

    • 修改 Docker 服务配置,使其允许通过 TCP 2375 端口进行远程访问:

      vim /lib/systemd/system/docker.service
      

      注释掉原来的 ExecStart 行,并新增以下行:

      ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
      
    • 更新配置并重新启动 Docker:

      systemctl daemon-reload
      systemctl restart docker
      
    • 开放 2375 端口并检查:

      firewall-cmd --add-port=2375/tcp --permanent
      firewall-cmd --reload
      firewall-cmd --query-port=2375/tcp
      

    这些步骤是可选的。Docker Compose 并不强制要求 Docker 远程访问开启。如果你要在本地使用 Docker Compose,远程访问配置是 不必要 的。但是,如果你的 Docker Compose 部署涉及到多个主机之间的交互(例如在远程主机上运行容器),则需要开启 Docker 远程访问。

总结:

  • 必须步骤:下载 Docker Compose 二进制文件、赋予执行权限、测试安装。
  • 可选步骤:开启 Docker 的远程访问(如果你需要在远程主机上控制 Docker)。

如果你只是本地使用 Docker Compose,完全可以跳过 Docker 远程访问配置步骤。


下载版本的选择

选择 Docker Compose 版本时,通常推荐使用最新稳定版本,以确保你获得最新的功能和 bug 修复。具体选择版本时可以参考以下几点:

1. 最新稳定版本

Docker Compose 的最新版本可以提供最好的兼容性和功能。你可以通过访问 Docker Compose 的 GitHub Releases页面 来查看最新的版本。目前,官方建议使用的版本是 v2.x 系列,这是因为:

  • v2.x 引入了性能和功能改进,并且是未来的主要更新方向。
  • 最新版本修复了之前版本的已知问题,增强了与 Docker 引擎的兼容性。

可以通过以下命令安装最新的 v2 版本(以 2.21.0 为例,具体的版本号可以查看 GitHub):

sudo curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2. 稳定性和项目需求

  • 最新版本(v2.x)通常推荐用于新项目,因为它包含了性能改进、功能增强以及更好的与 Docker 引擎的整合。
  • 旧版本(如 v1.29.x)可以用于已存在的项目,特别是如果你当前的项目或者 CI/CD 环境是基于 v1 版本构建的,可以继续使用 v1.29.2,这是 v1.x 系列的最终稳定版本。

3. v2 版本与 v1 的差异

Docker Compose v2 相比 v1.x 系列有了一些显著的变化:

  • Docker Compose v2 作为 Docker CLI 插件的一部分,使用 docker compose(而不是 docker-compose)命令来执行。
  • 提供了与 Docker Desktop 更好的集成,特别是针对 Windows 和 macOS 用户。
  • 更好的性能和资源管理,特别是在大规模编排的场景下。

推荐选择

  • v2.x:推荐安装最新的 v2.x 版本(比如 v2.21.0),适用于绝大部分新项目和环境。
  • v1.29.x:如果你的项目依赖于 v1 版本,并且暂时不考虑迁移到 v2,可以使用 v1.29.2,这是 v1 系列的最后一个版本。

安装 v2 最新版本的命令:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

升级注意事项

  • 迁移到 v2 时,注意 docker-compose 命令可以直接使用,但官方推荐使用 docker compose 作为命令格式。

谢谢观看! 希望能对你有所帮助。

相关文章:

CentOS7上下载安装 Docker Compose

Docker Compose简要介绍(想直接看安装步骤的请跳转到[必要的安装步骤]) Docker Compose 是一个用于定义和管理多容器 Docker 应用的工具,它可以通过一个简单的 YAML 文件(docker-compose.yml)来配置应用程序的服务、网…...

虚拟机的 NAT 模式 或 Bridged 模式能够被外界IPping通

如果虚拟机使用的是 NAT 模式 或 Bridged 模式,通常可以让外部网络(例如互联网)访问虚拟机。NAT 和 Bridged 模式的不同之处在于它们如何将虚拟机连接到宿主机和外部网络。以下是这两种模式的详细说明: 1. NAT 模式 在 NAT 模式…...

C# 使用Dll的几种方法举例

使用 DLL(动态链接库)是 C# 开发中常见的任务之一。DLL 文件包含可以在运行时加载的代码和数据,允许程序共享功能和资源,降低程序的内存占用并促进代码的复用。本篇文章将深入探讨 C# 中使用 DLL 的多种方法,并提供相关…...

什么是不同类型的微服务测试?

大家好,我是锋哥。今天分享关于【什么是不同类型的微服务测试?】面试题?希望对大家有帮助; 什么是不同类型的微服务测试? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 微服务架构中的测试可以分为多种类…...

Docker 拉取镜像时配置可用镜像源(包含国内可用镜像源)

在/etc/docker/daemon.json中写入如下内容(如果文件不存在请新建该文件): { "registry-mirrors":["https://registry.docker-cn.com"] } 重新加载 json 配置文件: sudo systemctl daemon-reload重启 docker 服务: sud…...

International Symposium on Artificial Intelligence Innovations

计算机科学(Computer Science): 算法、自动化软件工程、生物信息学和科学计算、计算机辅助设计、计算机动画、计算机体系结构、计算机建模、计算机网络、计算机安全、计算机图形学与图像处理、数据库与数据挖掘、数据压缩、数据加密、数字信号…...

Golang笔记_day10

Go面试题(三) 1、什么是channel,为什么它可以做到线程安全 在Go语言中,channel是一种类型,它可以用来在协程之间传递数据通过共享内存来通信: 通过共享内存来通信是指多个线程或进程直接访问相同的内存区域…...

mlir learn

https://github.com/j2kun/mlir-tutorial 学习这个项目 https://www.jeremykun.com/2023/08/10/mlir-getting-started/ get start 用我的mac编译一下试试看 然后遇到架构不对的问题 因为他的提交默认是x86 https://github.com/j2kun/mlir-tutorial/pull/1/commits/5a267e269d57…...

Windows安装RabbitMQ 4.0.2(图文教程)

本章教程,主要记录在Windows 10上RabbitMQ 4.0.2的安装过程。 一、下载安装包 1、官方下载(速度不稳定) Erlang:https://github.com/erlang/otp/releases/download/OTP-26.0/otp_win64_26.0.exe RabbitMQ 4.0.2:https://github.com/rabbitmq/rabbitmq-server/releases/do…...

分布式系统中为什么需要使用消息队列

本文转载自 linkedkeeper.com 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。 当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ&#…...

Linux环境配置(学生适用)

1.挑选最便宜的云服务器 如腾讯云服务器,华为云服务器,百度云服务器等等…… 2.找到你的云服务器实例,然后找到你的公网IP。 3.云服务器实例 ---更多 --- 重置root密码 (一定要重置) 4. 下载并安装 xshell 或者其他登陆软件 xshel…...

麦禾软件:Mac用户找免费开源工具的最佳选择

抖知书老师推荐: ​麦禾软件已经成为众多Mac用户的必备平台,尤其对于那些经常寻找免费、开源、正版软件的用户来说,绝对是一个福音。随着科技的不断进步和用户需求的提升,安全、便捷的软件下载体验成为用户选择平台的核心标准。而…...

OpenCV4.8 开发实战系列专栏之 08 - 通道分离与合并

大家好,欢迎大家学习OpenCV4.8 开发实战专栏,长期更新,不断分享源码。 专栏代码全部基于C 与Python双语演示,专栏答疑群 请联系微信 OpenCVXueTang_Asst 本文关键知识点: OpenCV中默认imread函数加载图像文件&#…...

iOS 18.1 RC 版本发布,修复iPhone16随机重启、浏览视频卡顿等bug

今日,苹果发布 iOS 18.1 RC 版本升级,内部版本号为 22B82。 iOS 18.1 RC 也就是 iOS 18.1 准正式版,如果没有大的 Bug,这将是 iOS 18.1 正式版发布前最后一次更新,正式版预计下周向消费者推送。 该 RC 版除了为海外用…...

安装buildkit,并使用buildkit构建containerd镜像

背景 因为K8s抛弃Docker了,所以就只装了个containerd,这样就需要一个单独的镜像构建工具了,就用了buildkit,这也是Docker公司扶持的,他们公司的人出来搞的开源工具,官网在 https://github.com/moby/buildkit 简介 服务端为buildkitd,负责和runc或containerd后端连接干活,目前…...

maven jar包二进制文件 invalid stream header: EFBFBDEF 的错误

背景: 将jasper模板文件导入jar包后,生成文件报错 org.springframework.core.io.Resource resource new ClassPathResource("/template/XXXX.jasper");jasperPrint JasperFillManager.fillReport(resource.getInputStream(), paramentMap, …...

Git绑定Gitee或Github以及Git面试常见题

1.绑定Git或Gitee Git绑定Gitee或GitHub的过程相对简单,以下是详细的步骤说明: 一、绑定Gitee仓库 在Gitee上创建仓库 登录Gitee官网,点击首页右上角的“”号,选择“新建仓库”。在新建仓库页面,输入仓库的名称、描述…...

值得细读的8个视觉大模型生成式预训练方法

写在前面 大语言模型的进展催生出了ChatGPT这样的应用,让大家对“第四次工业革命”和“AGI”的来临有了一些期待,也作为部分原因共同造就了美股2023年的繁荣。LLM和视觉的结合也越来越多:比如把LLM作为一种通用的接口,把视觉特征…...

go 包相关知识

在Go语言中,包的引用和搜索路径是由环境变量GOPATH和GO111MODULE共同决定的。 GOPATH环境变量:这个变量定义了默认的工作目录,Go命令行工具将会在这个目录下查找包文件。这个目录通常包含三个子目录:src、bin和pkg。 src目录包含…...

机器学习:opencv--人脸检测以及微笑检测

目录 前言 一、人脸检测的原理 1.特征提取 2.分类器 二、代码实现 1.图片预处理 2.加载分类器 3.进行人脸识别 4.标注人脸及显示 三、微笑检测 前言 人脸检测是计算机视觉中的一个重要任务,旨在自动识别图像或视频中的人脸。它可以用于多种应用&#xff0…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 &#xff1a;开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置&#xff0c;将微信开发者工具放入到Hbuilder中&#xff0c; 打开后出现 如下 bug 解…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...