docker及docker-compose安装及使用

docker compose

🔗官网地址

一、为什么要使用docker compose

1.	简化管理
•	通过一个 YAML 文件定义和管理多容器应用。
•	简化服务间的编排与协调,方便环境的管理与复制。
2.	提升协作效率
•	配置文件易于共享,便于开发、运维等团队协作。
•	加快问题解决速度,提升整体开发效率。
3.	加快开发迭代
•	Compose 缓存容器配置,未更改的服务可复用容器。
•	快速修改和重启环境,提高开发与测试效率。
4.	良好的可移植性
•	支持在 Compose 文件中使用变量。
•	可灵活适配不同环境和用户需求。
5.	强大的社区支持
•	拥有活跃社区和丰富的资源与教程。
•	持续更新迭代,便于问题排查与学习提升。

二、 docker compose简介

1、Docker Compose是一个工具,用于定义和运行多容器应用程序的工具;

2、Docker Compose通过yml文件定义多容器的docker应用;

3、Docker Compose通过一条命令根据yml文件的定义去创建或管理多容器;

如下图所示:
在这里插入图片描述

三、下载与安装

下载与安装:

  • 在安装docker时候已经完成了安装,直接查看版本号,查看是否安装成功
  • Docker 的 RPM 包已经 自动附带了 Compose 插件(docker-compose-plugin)
docker compose version

在这里插入图片描述
如果你想看看你的docker compose安装目录

docker info | grep -i compose
# -i   忽略大小写 (ignore)

在这里插入图片描述

四、 入门案例

需求:使用docker compose部署redis和mysql

docker-compose.yml文件的内容如下所示:
我本地已经有redis 6379和mysql 3306, 还有他们对应的数据卷, 为了避免各种冲突, 所以我的配置看起来有些奇怪

1、使用vim编辑

vim  docker-compose.yml
# 按i 进入编辑模式 粘贴配置
# 按escwq  #保存并退出
version: '3.9'  # 指定 Docker Compose 文件版本(可选但推荐)services:redis:  # Redis 服务image: redis:7.0.10  # 使用 Redis 7.0.10 镜像container_name: redis-test  # 容器名称为 redis-testports:- "6380:6379"  # 宿主机端口6380映射到容器6379volumes:- redis-data-test:/data  # 使用命名卷持久化 Redis 数据mysql:  # MySQL 服务image: mysql:8.0.30container_name: mysql-testports:- "3307:3306"  # 宿主机端口3307映射到容器3306volumes:- mysql_data-test:/var/lib/mysql  # 数据目录- mysql_conf-test:/etc/mysql      # 配置目录privileged: true  # 给予容器 root 权限(仅建议测试环境使用)environment:- MYSQL_ROOT_PASSWORD=test  # 设置 root 密码volumes:redis-data-test: {}     # Redis 数据卷mysql_data-test: {}     # MySQL 数据卷mysql_conf-test: {}     # MySQL 配置卷
  • 解释一下 volumes:
    🔹 告诉 Docker Compose:
    “我要用这几个命名卷(redis-data-test、mysql_data-test、mysql_conf-test),你用默认设置帮我创建就行。”
    📦 这些卷的作用:
    • 是 命名卷(Named Volumes),用于数据持久化。
    • 会在路径 /var/lib/docker/volumes/<卷名>/_data 中保存数据。
    • 每次运行 Compose 时都会复用这些卷(不会重复创建,但会自动挂载)。
    • 即使你删除了容器,卷中的数据也会保留。
    📌 {} 的作用
    • {} 表示“使用默认设置创建”
    • 你也可以只写成这样,效果一样:
volumes:redis-data-test:mysql_data-test:mysql_conf-test:

2、使用cat命令

  • 如果你的格式是复制过去是乱的可以用cat命令不走编辑器
cat > docker-compose.yml <<EOF
version: '3.9'  # 指定 Docker Compose 文件版本(可选但推荐)services:redis:  # Redis 服务image: redis:7.0.10  # 使用 Redis 7.0.10 镜像container_name: redis-test  # 容器名称为 redis-testports:- "6380:6379"  # 宿主机端口6380映射到容器6379volumes:- redis-data-test:/data  # 使用命名卷持久化 Redis 数据mysql:  # MySQL 服务image: mysql:8.0.30container_name: mysql-testports:- "3307:3306"  # 宿主机端口3307映射到容器3306volumes:- mysql_data-test:/var/lib/mysql  # 数据目录- mysql_conf-test:/etc/mysql      # 配置目录privileged: true  # 给予容器 root 权限(仅建议测试环境使用)environment:- MYSQL_ROOT_PASSWORD=test  # 设置 root 密码volumes:redis-data-test: {}     # Redis 数据卷mysql_data-test: {}     # MySQL 数据卷mysql_conf-test: {}     # MySQL 配置卷
EOF

在这里插入图片描述
在这里插入图片描述

3、docker compose常用命令:

# 启动容器(如果不存在容器就创建、存在则修改)
docker compose -f docker-compose.yml up -d# 删除所有容器
docker compose -f docker-compose.yml down# 停止所有容器
docker compose -f docker-compose.yml stop# 启动所有容器
docker compose -f docker-compose.yml start# 重启所有容器
docker compose -f docker-compose.yml restart

🔗常见指令参考官方文档

4、 查看结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 干掉
    在这里插入图片描述

五、部署springboot项目也一样

在yml配置中添加你制造好的镜像, 如何制作springboot镜像见教程🔗

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

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

相关文章

JVM学习专题(二)内存模型深度剖析

目录 1.JVM结构体系 ​编辑 2.跨平台特性 3.JVM整体结构及内存模型 1.栈内存 1、栈帧&#xff1a; 1.局部变量表 2.操作数栈 3.动态链接 4.方法出口 2、创建对象 2.程序计数器&#xff1a; 3.方法区 ​4.堆 5.本地方法区 6.总结 1.JVM结构体系 JDK、JRE 和 JVM…

Flink之Table API

Apache Flink 的 Table API 是 Flink 提供的一种高级抽象&#xff0c;用于以声明式方式处理批处理和流处理数据。它是基于关系模型的 API&#xff0c;用户可以像编写 SQL 一样&#xff0c;以简洁、类型安全的方式编写数据处理逻辑。 一、基本概念 1. 什么是 Table API&#xf…

基于Vue3.0的高德地图api教程005:实现绘制线并编辑功能

文章目录 6、绘制多段线6.1 绘制多段线6.1.1 开启绘制功能6.1.2 双击完成绘制6.1.3 保存到数据库6.2 修改多段线6.2.1 点击线,进入编辑模式6.2.2 编辑线6.3 完整代码6、绘制多段线 6.1 绘制多段线 6.1.1 开启绘制功能 实现代码: const changeSwitchDrawPolyline = ()=>…

“redis 目标计算机积极拒绝,无法连接” 解决方法,每次开机启动redis

如果遇到以上问题 先打开“服务” 找到App Readiness 右击-启动 以管理员身份运行cmd&#xff0c;跳转到 安装redis的目录 运行&#xff1a;redis-server.exe redis.windows.conf 以管理员身份打开另一cmd窗口&#xff0c;跳转到安装redis的目录 运行&#xff1a;redis-…

Java 大视界——Java 大数据在智慧交通智能停车诱导系统中的数据融合与实时更新

面对城市停车资源错配导致的30%以上交通拥堵问题&#xff0c;本文以某新一线城市智慧交通项目为蓝本&#xff0c;深度解析Java大数据技术如何实现多源停车数据融合、动态路径规划与诱导策略优化。通过构建“感知-计算-决策”全链路系统&#xff0c;实现车位状态更新延迟<200…

牛客周赛 Round 92(再现京津冀蓝桥杯???)

1. 小红的签到题 现在小红希望你写出一个长度为 nnn 的、使用了下划线命名法命名的变量。为了显出特征&#xff0c;请保证该变量至少由两个单词组成。 输入描述: 输入一个正整数 n(3≦n≦100)&#xff0c;代表需要构造的变量长度。 输出描述: 输出一个长度为 n 的字符串&#x…

2025-05-11 Unity 网络基础11——UnityWebRequest

文章目录 1 UnityWebRequest 介绍2 搭建 HTTP 服务器3 常用操作3.1下载资源3.1.1 下载文本3.1.2 下载图片3.1.3 下载 AB 包 3.2 上传资源3.2.1 上传数据类3.2.2 POST 上传3.3.3 PUT 上传 4 自定义操作4.1 下载资源4.1.1 Unity 内置 Handler4.1.2 自定义 Handler 4.2 上传资源4.…

GitHub 趋势日报 (2025年05月09日)

本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1voideditor/void⭐ 1879⭐ 15214TypeScript2ruanyf/weekly科技爱好者周刊&…

.NET MAUI 基础知识

文章目录 什么是 .NET MAUI&#xff1f;MAUI的核心特点与Xamarin.Forms的区别 开发环境搭建安装Visual Studio 2022安装必要组件配置Android开发环境配置iOS开发环境验证安装 创建第一个MAUI应用创建新项目MAUI项目结构解析理解关键文件运行应用程序简单修改示例使用热重载 MAU…

卷积神经网络全连接层详解:特征汇总、FCN替代与性能影响分析

【内容摘要】 本文聚焦卷积神经网络&#xff08;CNN&#xff09;的全连接层&#xff0c;详细介绍其将二维特征图转化为一维向量的过程&#xff0c;阐述全卷积网络&#xff08;FCN&#xff09;如何通过转置卷积替代全连接层以实现像素级分类&#xff0c;并分析全连接层对图像分类…

在C++中进行套接字编程时,主要使用以下头文件

目录 一.基本套接字头文件<sys/socket.h><netinet/in.h><arpa/inet.h><unistd.h><netdb.h> 二. 完整示例头文件包含三. 注意事项 在C中进行套接字编程时&#xff0c;主要使用以下头文件&#xff1a; 一.基本套接字头文件 <sys/socket.h>…

【Linux网络】HTTP

应用层协议 HTTP 前置知识 我们上网的所有行为都是在做IO&#xff0c;&#xff08;我的数据给别人&#xff0c;别人的数据给我&#xff09;图片。视频&#xff0c;音频&#xff0c;文本等等&#xff0c;都是资源答复前需要先确认我要的资源在哪台服务器上&#xff08;网络IP&…

JAVA异常体系

在 Java 里&#xff0c;异常体系是其错误处理机制的核心内容&#xff0c;它能够帮助开发者有效应对程序运行时出现的各种意外状况。 异常体系的基本架构 它主要包含两个重要分支&#xff1a; Error&#xff08;错误&#xff09;&#xff1a;这类异常是程序自身无法处理的严重…

vue 去掉右边table的下拉条与下面的白色边框并补充满

::v-deep table {width: 100% !important; } ::v-deep .el-table::after, .el-table::before {display: none !important; }/* 隐藏滚动条但保留滚动功能 */ ::v-deep .el-table__body-wrapper::-webkit-scrollbar {width: 0 !important;height: 0 !important; }::v-deep .el-t…

uniapp+vue3+uview来开发我们的项目

前言&#xff1a; 就像我们vue的web的框架element、iview等一样&#xff0c;我们的uni-app开发也有适合的他的框架&#xff0c;除了他本身的扩展组件以外&#xff0c;第三方好用的就是就是uview了。 实现效果&#xff1a; 官网信息&#xff1a; vue2版本&#xff1a;uview-ui …

数据仓库:企业数据管理的核心引擎

一、数据仓库的由来 数据仓库&#xff08;Data Warehouse, DW&#xff09;概念的诞生源于企业对数据价值的深度挖掘需求。在1980年代&#xff0c;随着OLTP&#xff08;联机事务处理&#xff09;系统在企业中的普及&#xff0c;传统关系型数据库在处理海量数据分析时显露出明显瓶…

YOLOv12模型部署(保姆级)

一、下载YOLOv12源码 1.通过网盘分享的文件&#xff1a;YOLOv12 链接: https://pan.baidu.com/s/12-DEbWx1Gu7dC-ehIIaKtQ 提取码: sgqy &#xff08;网盘下载&#xff09; 2.进入github克隆YOLOv12源码包 二、安装Anaconda/pycharm 点击获取官网链接(anaconda) 点击获取…

一篇解决Redis:持久化机制

目录 认识持久化 持久化方案 RDB&#xff08;Redis DataBase&#xff09; 手动触发 自动触发 小结 AOF(Append-Only File) AOF缓冲区刷新机制 AOF重写机制 AOF重写流程 ​编辑 混合持久化 认识持久化 我们都知道Mysql有四大特征&#xff0c;原子性&#xff0c;持久…

从 Vue3 回望 Vue2:事件总线的前世今生

从 Vue3 回望 Vue2&#xff1a;事件总线的前世今生 以 Vue3 开发者视角回顾 Vue2 中事件总线机制 的文章。文章将围绕事件总线的缘起、用法、局限与演进展开&#xff0c;帮助 Vue3 开发者理解 Vue2 通信方式的历史意义及现代替代方案。 一、前言&#xff1a;Vue3 时代&#xff…

CSS结构性伪类、UI伪类与动态伪类全解析:从文档结构到交互状态的精准选择

一、结构性伪类选择器&#xff1a;文档树中的位置导航器 结构性伪类选择器是CSS中基于元素在HTML文档树中的层级关系、位置索引或结构特征进行匹配的一类选择器。它们无需依赖具体的类名或ID&#xff0c;仅通过文档结构即可精准定位元素&#xff0c;是实现响应式布局和复杂文档…