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 就是高性能的代表。有些朋友可能连什么是高性能都不一定理解…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
