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

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:
      - db

  db:
    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/mysql

volumes:
  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 上安装…...

基于深度学习的零样本学习

零样本学习&#xff08;Zero-Shot Learning, ZSL&#xff09;是深度学习中的一个前沿研究领域&#xff0c;其目标是在没有见过目标类别的样本的情况下&#xff0c;对这些新类别进行识别或分类。这种方法特别适用于在实际应用中存在大量未标注类别或新类别不断涌现的场景&#x…...

C++——list容器以及手动实现

LIST容器 list概述列表容器属性例子 list函数构造函数默认构造函数&#xff1a;带有元素个数和元素初值的构造函数&#xff1a;范围构造函数&#xff1a;拷贝构造函数&#xff1a;移动构造函数&#xff1a;示例 赋值运算符重载拷贝赋值操作符 (1)&#xff1a;移动赋值操作符 (2…...

Win11系统文件资源管理器鼠标右键卡顿解决方法

引用链接&#xff1a; Windows 11文件资源管理器崩溃怎么解决&#xff1f;看看这7个解决办法&#xff01;...

零基础学Python之 第十八讲 文件读写

当你开始学习Python编程时&#xff0c;文件读写是一个非常基础且重要的技能。本篇博客将引导你从零开始学习如何在Python中进行文件读写操作。 1. 打开文件 在Python中&#xff0c;要操作一个文件&#xff0c;首先需要打开它。使用内置的 open() 函数来打开文件&#xff0c;语…...

检索增强生成(RAG):智能内容生成的新纪元

引言 在大 AI 时代&#xff0c;生成式人工智能&#xff08;GenAI&#xff09;模型&#xff0c;尤其是大型语言模型&#xff08;LLM&#xff09;&#xff0c;已经展现出了令人瞩目的能力。然而&#xff0c;这些模型在提供信息的准确、即时、专业、权威等方面仍存在局限。检索增…...

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&#xff1a;此方法用于获取客户端发送的请求中携带的参数&#xff0c;通常这些参数是通过HTTP GET或POST请求传递的表单数据。例如&#xff0c;用户填写的用户名和密码等输入信息。getAttribute&#xff1a;该方法用来获取在服务器端通过setAttribute方法…...

Delphi FMX安卓Android播放mp3音频内存流

【笔记&#xff1a;安卓开发JavaDelphi FMX】 Delphi FMX跨平台的MediaPlayer无法播放音频数据流只能打开音频文件播放&#xff0c;但有时候需要直接播放内存流数据而无需生成文件&#xff0c;可以通过把内存流转ByteArray再通过Android平台系统原生的MediaDataSource或ParcelF…...

MapUtils常用方法

1、摘要 MapUtils是一个用于处理Map对象的实用工具类&#xff0c;它提供了许多方便的方法来执行常见的操作&#xff0c;如获取值、设置默认值、合并Map等。本文将介绍MapUtils的常见用法&#xff0c;以帮助你更轻松地处理Map数据。 2、前言 在Java编程中&#xff0c;Map是一…...

自定义PasswordEditText控件,在手机字体应用后,字体样式未发生改变

原来的输入类型inputType为textPassword&#xff0c;现在将 inputType删掉即可...

学习打卡第31天

...

opencascade AIS_TexturedShape源码学习 贴纹理

opencascade AIS_TexturedShape opencascade 贴纹理 前言 //! 该类允许在形状上映射纹理。 //! 显示模式 AIS_WireFrame (0) 和 AIS_Shaded (1) 的行为与 AIS_Shape 中的行为相同&#xff0c; //! 而新模式 2 (包围盒) 和 3 (纹理映射) 扩展了其功能。 //! //! 纹理本身在 (0…...

C# winform 串口读取字节流,MB级别字节流

一、串口读取字节流 在 C# 中使用 Windows Forms (WinForms) 应用程序进行串口通信时&#xff0c;通常会使用 System.IO.Ports 命名空间中的 SerialPort 类。以下是一个简单的示例&#xff0c;展示了如何设置一个串口并读取字节流。 步骤 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是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例化子类有关。以前常见的搜索方式有&#xff1a; 1. 直接遍历&#xff0c;时间复杂度为O(N)&#xff0c;元素如果比较多效率会非常慢。 2. 二分查找&#x…...

CSS3 scale 适配

Scale适配&#xff0c;在前端开发中&#xff0c;特别是在CSS3中&#xff0c;主要指的是使用scale()函数对元素进行缩放处理&#xff0c;以适应不同的屏幕尺寸或达到特定的视觉效果。以下是对Scale适配的详细介绍&#xff1a; 一、基本概念 scale() 是CSS3中transform属性的一…...

SX_初识GitLab_1

1、对GitLab的理解&#xff1a; 目前对GitLab的理解是其本质是一个远程代码托管平台&#xff0c;上面托管多个项目&#xff0c;每个项目都有一个master主分支和若干其他分支&#xff0c;远程代码能下载到本机&#xff0c;本机代码也能上传到远程平台 1.分支的作用&#xff1a…...

这才是 PHP 高性能框架 Workerman 的立命之本

大家好&#xff0c;我是码农先森。 在这个大家都崇尚高性能的时代&#xff0c;程序员的谈笑间句句都离不开高性能&#xff0c;仿佛嘴角边不挂着「高性能」三个字都会显得自己很 Low&#xff0c;其中众所皆知的 Nginx 就是高性能的代表。有些朋友可能连什么是高性能都不一定理解…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

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

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

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...