docker compse简介与安装
目录
1. Docker Compose 简介
2. Docker Compose 安装
2.1 在 Ubuntu 上安装 Docker Compose
2.1.1 通过 apt 安装
2.1.2 使用官方脚本安装最新版本
2.2 在 CentOS 上安装 Docker Compose
2.2.2 使用官方脚本安装最新版本
2.2.3 使用 pip 安装
2.3 在 openEuler 上安装 Docker Compose
2.3.1 使用官方脚本安装最新版本
2.2.2 检查并通过 dnf 安装 Docker Compose
2.3.3 使用 pip 安装
3. Docker Compose 测试示例
3.1 目录结构:
3.2 docker-compose.yml 文件内容:
3.3 html/index.html 内容示例:
3.4 启动服务
3.5 访问 Web 服务
3.6 看能出现问题
3.6.1 解决端口冲突
3.6.2 停止并移除服务
4.docker compose常用命令
4.1 启动和停止服务
4.1.1 启动服务
4.1.3 停止并移除容器、网络、卷
4.2 构建和管理服务
4.2.1 构建或重建服务
4.2.2 拉取服务的镜像
4.2.3 重新启动服务
4.3 监控和调试
4.3.1 查看服务的日志
4.3.2 列出当前项目的所有容器
4.3.3 查看服务的状态
4.4 扩展和缩放服务
4.4.1 扩展服务
4.5 运行一次性命令和任务
4.5.1 在服务容器中运行命令
4.5.2 运行一次性任务
4.6 配置管理
4.6.1 查看配置
4.6.2 列出定义的服务
Docker Compose 需要在已经安装了 Docker 的基础上进行安装。
Docker安装参考:Ubuntu、centos、openEuler安装docker-CSDN博客
Docker与compose的区别:Docker 和 Docker Compose 的区别对比-CSDN博客
1. Docker Compose 简介
Docker Compose 是一个用于定义和管理多容器 Docker 应用程序的工具。通过编写一个简单的 YAML 文件 (docker-compose.yml),您可以定义应用的服务、网络和卷,并通过一个命令来启动、停止或管理整个应用程序的各个容器。Docker Compose 主要用于以下场景:
- 微服务架构:管理由多个微服务组成的应用程序。
- 本地开发环境:为开发者提供一致的本地环境,方便调试和测试。
- 自动化测试:快速启动和销毁测试环境。
2. Docker Compose 安装
根据您的操作系统,选择以下安装方法。
2.1 在 Ubuntu 上安装 Docker Compose
2.1.1 通过 apt 安装
1.更新软件包索引:
sudo apt update
2.安装 Docker Compose:
sudo apt install docker-compose
3.验证安装:
docker-compose --version
2.1.2 使用官方脚本安装最新版本
1.下载最新版本:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.赋予执行权限:
sudo chmod +x /usr/local/bin/docker-compose
3.验证安装:
docker-compose --version
2.2 在 CentOS 上安装 Docker Compose
2.2.1 通过 EPEL 安装
1.启用 EPEL 仓库:
sudo yum install epel-release
2.安装 Docker Compose:
sudo yum install docker-compose
3.验证安装:
docker-compose --version
2.2.2 使用官方脚本安装最新版本
1.下载最新版本:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.赋予执行权限:
sudo chmod +x /usr/local/bin/docker-compose
3.验证安装:
docker-compose --version
2.2.3 使用 pip 安装
1.安装 pip:
sudo yum install python3-pip
2.通过 pip 安装 Docker Compose:
sudo pip3 install docker-compose
3.验证安装:
docker-compose --version
2.3 在 openEuler 上安装 Docker Compose
openEuler 与 CentOS 类似,但在某些方面有所不同。以下是两种推荐的安装方法。
2.3.1 使用官方脚本安装最新版本
1.下载最新版本:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.赋予执行权限:
sudo chmod +x /usr/local/bin/docker-compose
3.验证安装:
docker-compose --version
2.2.2 检查并通过 dnf 安装 Docker Compose
1.更新软件包索引:
sudo dnf update
2.搜索 Docker Compose 包:
sudo dnf search docker-compose
如果存在可用的 Docker Compose 包,您会在结果中看到。
3.安装 Docker Compose:
如果搜索结果中显示了 Docker Compose,可以直接使用以下命令安装:
sudo dnf install docker-compose
4.验证安装:
docker-compose --version
2.3.3 使用 pip 安装
1.安装 pip:
sudo dnf install python3-pip
2.通过 pip 安装 Docker Compose:
sudo pip3 install docker-compose
3.验证安装:
docker-compose --version
3. Docker Compose 测试示例
创建一个简单的 docker-compose.yml 文件,包含一个 Nginx 服务和一个 MySQL 数据库服务。
3.1 目录结构:
my_project/
│
├── docker-compose.yml
└── html/
└── index.html
3.2 docker-compose.yml 文件内容:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8081:80"
volumes:
- ./html:/usr/share/nginx/html:ro
depends_on:
- dbdb:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: testdb
MYSQL_USER: testuser
MYSQL_PASSWORD: testpassword
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysqlvolumes:
db_data:
3.3 html/index.html 内容示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Docker Compose Test</title>
</head>
<body>
<h1>Docker Compose is working!</h1>
</body>
</html>
3.4 启动服务
docker-compose up -d
3.5 访问 Web 服务
在浏览器中访问 http://localhost:8081,您应该看到页面显示 “Docker Compose is working!”。

3.6 看能出现问题
3.6.1 解决端口冲突
如果遇到端口冲突错误,您可以:
1.查找并终止占用端口的进程。
sudo lsof -i :8080 sudo kill <PID>
2.修改 docker-compose.yml 文件中的端口,使用未占用的端口。
3.6.2 停止并移除服务
docker-compose down
4.docker compose常用命令
4.1 启动和停止服务
4.1.1 启动服务
docker-compose up
这个命令会启动 docker-compose.yml 文件中定义的所有服务。如果添加 -d 参数,服务将在后台运行(detached 模式):
docker-compose up -d
4.1.2 停止服务
docker-compose stop
这个命令会停止正在运行的所有服务,但不会移除容器。
4.1.3 停止并移除容器、网络、卷
docker-compose down
这个命令会停止所有服务,并移除创建的容器、网络和卷。如果您想移除关联的数据卷,可以添加 -v 选项:
docker-compose down -v
4.2 构建和管理服务
4.2.1 构建或重建服务
docker-compose build
这个命令根据 Dockerfile 构建镜像。如果只想构建某个服务,可以指定服务名:
docker-compose build <service_name>
4.2.2 拉取服务的镜像
docker-compose pull
这个命令会从远程仓库拉取 docker-compose.yml 文件中定义的镜像。
4.2.3 重新启动服务
docker-compose restart
这个命令会重启所有运行中的服务。
4.3 监控和调试
4.3.1 查看服务的日志
docker-compose logs
这个命令会显示所有服务的日志。如果只想查看某个服务的日志,可以指定服务名:
docker-compose logs <service_name>
4.3.2 列出当前项目的所有容器
docker-compose ps
这个命令会显示当前项目中所有容器的状态和端口映射等信息。
4.3.3 查看服务的状态
docker-compose top
这个命令会显示当前运行的容器及其相关的进程信息。
4.4 扩展和缩放服务
4.4.1 扩展服务
docker-compose up --scale <service_name>=<replica_count>
这个命令会将指定的服务扩展到指定的副本数。例如,扩展 web 服务到 3 个实例:
docker-compose up --scale web=3
4.5 运行一次性命令和任务
4.5.1 在服务容器中运行命令
docker-compose exec <service_name> <command>
这个命令允许您在指定的服务容器中执行命令。例如,在 web 服务容器中打开 Bash shell:
docker-compose exec web bash
4.5.2 运行一次性任务
docker-compose run <service_name> <command>
这个命令会启动一个新的容器并运行指定的命令,然后停止并移除该容器。例如:
docker-compose run web echo "Hello, Docker Compose!"
4.6 配置管理
4.6.1 查看配置
docker-compose config
这个命令会显示当前项目的配置内容,包括合并的配置文件。
4.6.2 列出定义的服务
docker-compose config --services
这个命令会列出 docker-compose.yml 文件中定义的所有服务。
相关文章:
docker compse简介与安装
目录 1. Docker Compose 简介 2. Docker Compose 安装 2.1 在 Ubuntu 上安装 Docker Compose 2.1.1 通过 apt 安装 2.1.2 使用官方脚本安装最新版本 2.2 在 CentOS 上安装 Docker Compose 2.2.2 使用官方脚本安装最新版本 2.2.3 使用 pip 安装 2.3 在 openEuler 上安装…...
基于深度学习的零样本学习
零样本学习(Zero-Shot Learning, ZSL)是深度学习中的一个前沿研究领域,其目标是在没有见过目标类别的样本的情况下,对这些新类别进行识别或分类。这种方法特别适用于在实际应用中存在大量未标注类别或新类别不断涌现的场景&#x…...
C++——list容器以及手动实现
LIST容器 list概述列表容器属性例子 list函数构造函数默认构造函数:带有元素个数和元素初值的构造函数:范围构造函数:拷贝构造函数:移动构造函数:示例 赋值运算符重载拷贝赋值操作符 (1):移动赋值操作符 (2…...
Win11系统文件资源管理器鼠标右键卡顿解决方法
引用链接: Windows 11文件资源管理器崩溃怎么解决?看看这7个解决办法!...
零基础学Python之 第十八讲 文件读写
当你开始学习Python编程时,文件读写是一个非常基础且重要的技能。本篇博客将引导你从零开始学习如何在Python中进行文件读写操作。 1. 打开文件 在Python中,要操作一个文件,首先需要打开它。使用内置的 open() 函数来打开文件,语…...
检索增强生成(RAG):智能内容生成的新纪元
引言 在大 AI 时代,生成式人工智能(GenAI)模型,尤其是大型语言模型(LLM),已经展现出了令人瞩目的能力。然而,这些模型在提供信息的准确、即时、专业、权威等方面仍存在局限。检索增…...
ubuntu2204安装elasticsearch7.17.22
下载安装 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.22-amd64.deb wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.22-amd64.deb.sha512 shasum -a 512 -c elasticsearch-7.17.22-amd64.deb.sha512 su…...
介绍Servlet后端中两种接收参数方式req.getAttributer和req.getParameter的区别
数据来源 getParameter:此方法用于获取客户端发送的请求中携带的参数,通常这些参数是通过HTTP GET或POST请求传递的表单数据。例如,用户填写的用户名和密码等输入信息。getAttribute:该方法用来获取在服务器端通过setAttribute方法…...
Delphi FMX安卓Android播放mp3音频内存流
【笔记:安卓开发JavaDelphi FMX】 Delphi FMX跨平台的MediaPlayer无法播放音频数据流只能打开音频文件播放,但有时候需要直接播放内存流数据而无需生成文件,可以通过把内存流转ByteArray再通过Android平台系统原生的MediaDataSource或ParcelF…...
MapUtils常用方法
1、摘要 MapUtils是一个用于处理Map对象的实用工具类,它提供了许多方便的方法来执行常见的操作,如获取值、设置默认值、合并Map等。本文将介绍MapUtils的常见用法,以帮助你更轻松地处理Map数据。 2、前言 在Java编程中,Map是一…...
自定义PasswordEditText控件,在手机字体应用后,字体样式未发生改变
原来的输入类型inputType为textPassword,现在将 inputType删掉即可...
学习打卡第31天
...
opencascade AIS_TexturedShape源码学习 贴纹理
opencascade AIS_TexturedShape opencascade 贴纹理 前言 //! 该类允许在形状上映射纹理。 //! 显示模式 AIS_WireFrame (0) 和 AIS_Shaded (1) 的行为与 AIS_Shape 中的行为相同, //! 而新模式 2 (包围盒) 和 3 (纹理映射) 扩展了其功能。 //! //! 纹理本身在 (0…...
C# winform 串口读取字节流,MB级别字节流
一、串口读取字节流 在 C# 中使用 Windows Forms (WinForms) 应用程序进行串口通信时,通常会使用 System.IO.Ports 命名空间中的 SerialPort 类。以下是一个简单的示例,展示了如何设置一个串口并读取字节流。 步骤 1: 添加引用 确保你的项目中已经包含…...
创建一个简单的单链表
1.头文件的Slist.h的代码 #pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h> typedef int SListint; typedef struct Slist//单链表 {SListint data;struct Slist* next; }SL;//尾插 void SlistPushBank(SL*…...
15.1 Zookeeper简介安装及基础使用
1. Zookeeper介绍 1.1 介绍 1.2 应用场景简介 1.3 zookeeper工作原理 1.4 zookeeper特点...
详细说明Java中Map和Set接口的使用方法
Map与Set的基本概念与场景 Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。以前常见的搜索方式有: 1. 直接遍历,时间复杂度为O(N),元素如果比较多效率会非常慢。 2. 二分查找&#x…...
CSS3 scale 适配
Scale适配,在前端开发中,特别是在CSS3中,主要指的是使用scale()函数对元素进行缩放处理,以适应不同的屏幕尺寸或达到特定的视觉效果。以下是对Scale适配的详细介绍: 一、基本概念 scale() 是CSS3中transform属性的一…...
SX_初识GitLab_1
1、对GitLab的理解: 目前对GitLab的理解是其本质是一个远程代码托管平台,上面托管多个项目,每个项目都有一个master主分支和若干其他分支,远程代码能下载到本机,本机代码也能上传到远程平台 1.分支的作用:…...
这才是 PHP 高性能框架 Workerman 的立命之本
大家好,我是码农先森。 在这个大家都崇尚高性能的时代,程序员的谈笑间句句都离不开高性能,仿佛嘴角边不挂着「高性能」三个字都会显得自己很 Low,其中众所皆知的 Nginx 就是高性能的代表。有些朋友可能连什么是高性能都不一定理解…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
uni-app学习笔记三十五--扩展组件的安装和使用
由于内置组件不能满足日常开发需要,uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件,需要安装才能使用。 一、安装扩展插件 安装方法: 1.访问uniapp官方文档组件部分:组件使用的入门教程 | uni-app官网 点击左侧…...
《Offer来了:Java面试核心知识点精讲》大纲
文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...
