p20 docker自己commit一个镜像 p21 容器数据卷 p22mysql同步数据(国内镜像被封锁暂时往后放)p23具名挂载和匿名挂载

news2024/11/27 21:39:48

如何自己commit一个镜像

这里还是先引用一下老师的笔记
在这里插入图片描述

关于如何自己commit一个镜像这个问题目前因为从仓库中拉下来的Tomcat里面是没有项目的,所以把webapps.dist里面的拷贝到webapps里面去作为自己的镜像在commit一下

这里用Tomcat举例子首先把镜像拉取下来执行 docker pull tomcat 我这里已经有了最新版本。
在这里插入图片描述

有了Tomcat镜像之后就执行docker run -it -p 8080:8080 tomcat来启动tomcat 这里因为tomcat是一个前台应用所以得使用快捷键 ctrl + p + q来退出当前容器这样子退出不会让tomcat容器停止运行
在这里插入图片描述

退出来之后就可以进入我们的tomcat控制台,这个时候我们执行docker exec -it 40359d451d90 /bin/bash可以看到我们已经进入进来了
在这里插入图片描述
因为从镜像仓库当中下载的镜像里面的webapps里面是空的所以为了方便我们测试我们这个时候需要把webapps.dist拷贝到webapps里面去
我们执行cp -r webapps.dist/* webapps
在这里插入图片描述

这个时候就可以访问我们的tomcat服务器了记得开启阿里云服务器的安全组对应的端口哈!!!!

在这里插入图片描述

下一步就是commit镜像了执行命令docker commit -a="迟茗阳" -m="在webapp里面添加了一些东西" 40359d451d90 tomcat02:1.0注意这里镜像名字吧不能有大写字母

在这里插入图片描述

这个时候就看镜像多了一个tomcat02
在这里插入图片描述
一直到这里结合我前面写的就算是入门docker了但是还远远不够!!!后面还得学习docker数据卷 docker 网络和dockerfile

容器数据卷

还是上来先引用一下老师的笔记
在这里插入图片描述

在这里插入图片描述

下面是我自己的理解和总结---------------------------------

容器数据卷的概念主要为了解决容器数据持久化的问题。当容器停止或删除时,其内部的状态和数据通常会丢失。为了确保这些重要信息能够长期保存,即使在容器生命周期结束后也能继续访问,数据卷技术应运而生。

具体来说,数据卷允许将容器内的特定目录与宿主机上的一个目录进行绑定。这意味着,当你对容器内指定目录下的文件进行任何修改时,实际上是在直接操作宿主机上对应的文件。以MySQL为例,假设你基于官方MySQL镜像启动了一个容器。在这个过程中,你可以设置一个数据卷,将MySQL的数据目录(例如,包含数据库文件的目录)挂载到宿主机的一个特定位置。这样一来,无论何时你在MySQL容器中创建、修改或删除数据库,这些操作都会反映在宿主机的相应目录下,从而实现了数据的持久化存储。

这种做法的好处显而易见:

  • 数据保护:即使容器被删除或替换,由于数据实际存储于宿主机,因此不会丢失。
  • 灵活性:多个容器可以共享同一个宿主机上的数据卷,这在需要跨多个服务或应用共享数据的情况下非常有用。
  • 易于备份和恢复:因为数据独立于容器存在,所以更容易进行备份和恢复操作。

总之,通过使用数据卷,不仅解决了容器化应用中常见的数据持久化问题,还增强了系统的灵活性和可维护性。

下面是实际的测试内容------------------------
还是先引用一下老师的笔记
在这里插入图片描述

启动一个centos容器把centos容器里面的home目录挂载到宿主机的home/ceshi目录下面去
执行命令docker run -it -v /home/ceshi:/home centos /bin/bash做一个挂载并且进入到容器当中去
在这里插入图片描述
可以看到多了一个cecshi目录这就相当于做了一个挂载之后再宿主机上面添加东西会自动同步到容器内,在容器内添加的东西会自动同步到宿主机里面去
这个时候可以执行docker inspect 容器id来查看容器的详细信息来看看他是否已经挂载成功了可以看到是已经挂载成功的了
在这里插入图片描述

可以看到现在容器里面和容器外面的两个挂载的内容是一样的都是空的
在这里插入图片描述

现在开始新建文件在容器里面新建一个文件test.java在容器外面不用新建会自动同步
在这里插入图片描述

在容器外面新建的也会自动同步到里面去
在这里插入图片描述

上面是新建文件,容器内外新建文件都是一样的接下来看文件里面的内容!!
还是一样的我们在容器里面对test01.txt写一个侧测试内容看看能不能自动同步到容器外面去
结论是容器里面修改的文件内容会自动同步到容器外面去
在这里插入图片描述
接下来看容器外面修改的文件内容能不能自动同步到容器里面去
在这里插入图片描述

注意以下这里就算是停止了容器因为已经把数据挂载出去了所以数据也不会丢失,删除容器数据也不会丢失!!!但是弊端就是会占用两倍的存储

mysql同步数据

这里因为docker的镜像加速国内都给封锁了所以这里只能先往后放了,有需要的直接取看老师的视频
狂神说dockermysql同步数据
其实就是用数据卷技术把mysql存储数据的地方挂载到宿主机上面去

具名挂载和匿名挂载

具名挂在和匿名挂载其实就也是外挂数据卷,没啥区别就是前面启动容器的时候我们指定了容器里面的/home目录挂载到/home/ceshi 要是使用匿名挂在我们可以不指定挂载的目录

我们使用NGINX镜像启动一个具名数据卷

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
启动玩之后因为我们指定了数据卷的名字但是没有指定挂载的数据卷在宿主机上面的路径,docker会自动的有一个空间来存储这些没有指定宿主机路径的挂载

匿名挂载和具名挂载的区别
匿名挂载和具名挂载都是Docker中的数据卷挂载方式,主要用于容器的数据持久化。具体来说:

  1. 匿名挂载:
  • 不需要指定挂载卷的名称。
  • 适合临时使用或不需要持久化数据的情况。
  • 如果容器被删除,匿名卷也会被删除。
  1. 具名挂载:
  • 明确指定挂载卷的名称。
  • 适合需要持久化数据和更好地管理数据的情况。
  • 即使容器被删除,具名卷依然存在,可以通过名称进行管理。
    挂载之后可以使用docker volume ls来查看已经有的具名挂载和匿名挂载,其实匿名挂载就是不指定名字但是对于docker来说有一个哈希码也是一样的
    使用NGINX镜像启动具名数据卷
    假设我们要使用NGINX镜像启动一个具名数据卷,具体步骤如下:
    1.创建具名卷:
    docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
    创建匿名卷用这个命令
    docker run -d -P --name nginx03 -v /etc/nginx nginx
    2.创建成功之后可以执行 docker volume ls 来查看已经有的卷
    在这里插入图片描述

可以查看数据卷的详细信息
在这里插入图片描述

总结一下数据卷的挂载方式

-v 容器内路径 # 匿名挂载
-v 数据卷名:/容器内路径 # 具名挂载
-v /宿主机路径:/容器内路径 # 指定路径挂载

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

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

相关文章

C语言 | Leetcode C语言题解之第468题验证IP地址

题目&#xff1a; 题解&#xff1a; char * validIPAddress(char * queryIP) {int len strlen(queryIP);if (strchr(queryIP, .)) {// IPv4int last -1;for (int i 0; i < 4; i) {int cur -1;if (i 3) {cur len;} else {char * p strchr(queryIP last 1, .);if (p…

读懂RAG理论到实践

目录 LLM面临的问题RAG数据准备阶段检索生成阶段 RAG实战数据准备阶段数据提取数据清洗补充&#xff1a;去除停用词 分块&#xff08;Chunking&#xff09;分块的方法固定大小分块Sentence splitting&#xff08;句分割&#xff09;递归分割 补充&#xff1a;特殊分块 向量化&a…

Java项目实战II基于Java+Spring Boot+MySQL的作业管理系统设计与实现(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在教育信息…

Spring Boot学习资源库:微服务架构的加速器

3 系统分析 3.1可行性分析 在进行可行性分析时&#xff0c;我们通常根据软件工程里方法&#xff0c;通过四个方面来进行分析&#xff0c;分别是技术、经济、操作和法律可行性。因此&#xff0c;在基于对目标系统的基本调查和研究后&#xff0c;对提出的基本方案进行可行性分析。…

网站集群批量管理-Ansible(playbook)

1.剧本概述 1. playbook 文件,用于长久保存并且实现批量管理,维护,部署的文件. 类似于脚本存放命令和变量 2. 剧本yaml格式,yaml格式的文件:空格,冒号 2. 区别 ans-playbookans ad-hoc共同点批量管理,使用模块批量管理,使用模块区别重复调用不是很方便,不容易重复场景部署服务…

视频流媒体解决方案,Liveweb国标GB28181视频监控汇聚平台

Liveweb视频监控国标平台指的是基于GB/T 28181协议的视频联网平台&#xff0c;可以对接各种符合国标GB/T 28181协议的视频平台、NVR录像机、网络监控摄像头、执法记录仪、应急布控球、移动单兵、无人机等设备。通过国标平台的联网&#xff0c;方便管理分布在不同地点的视频监控…

股指期货和股指期权有什么区别?

在金融衍生品的世界里&#xff0c;股权类衍生品无疑是其中的佼佼者&#xff0c;而股指期货和股指期权更是其中的佼佼者。尽管它们之间有着千丝万缕的联系&#xff0c;但它们之间的区别同样不容忽视。本文衍生股指君将详细解析股指期货和股指期权的核心区别。 一、交易的东西不…

【安装JDK和Android SDK】

安装JDK和Android SDK 1 前言2 下载2.1 下载途径2.2 JDK下载和安装2.2.1 下载2.2.2 安装并配置环境变量2.2.3 验证 2.3 SDK下载和安装2.3.1 下载2.3.2 安装2.3.3 环境变量配置2.3.4 验证 1 前言 在软件开发中&#xff0c;Android应用开发通常使用Android Studio&#xff0c;但…

进程守护化

文章目录 概念引入ps细节展示什么是进程组什么是会话细节演示有关指令的处理 用户级任务和进程组的关系关系不同 什么是守护进程如何创建守护进程 代码说明如何关闭守护进程 问题 概念引入 我们在之前的章节中已将看过进程相关的概念, 本篇介绍守护进程 进程还有进程组, 作业,…

Vue脚手架项目创建 --保姆级教程

Vue-项目创建 这里我默认已经安装好了脚手架&#xff0c;没装得可以看我上篇博客的安装教程。脚手架安装教程 脚手架提供了两种创建方式&#xff0c;我们以 vue ui 作为示例…… 1.输入 vue ui 进入图形界面进行项目配置 选择 一个你 的项目的存放路径&#xff0c;各自都不相…

[算法] 数组

1 二分查找 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/binary-search/submissions/570732311/ 前闭后闭 class …

Word 中脚注和尾注的区别有哪些?如何正确使用它们?

在撰写学术论文、报告或其他需要引用资料的文章时&#xff0c;脚注和尾注是两种常用的标注方法。它们不仅可以为读者提供额外的背景信息&#xff0c;还能帮助整理文章中的引用来源。下面我们就来详细的了解一下什么是脚注和尾注。 脚注 脚注&#xff08;Footnote&#xff09;…

大学离散数学:开启逻辑与思维的奇妙之旅

在大学的知识殿堂中&#xff0c;离散数学犹如一颗璀璨的明珠&#xff0c;散发着独特的魅力。 离散数学是现代数学的一个重要分支&#xff0c;它主要研究离散对象的结构及其相互关系。与连续数学不同&#xff0c;离散数学处理的是离散的、可数的对象&#xff0c;如整数、图、集…

Kubernetes简介与部署+Pod管理与优化

一、简介 1.基础信息 在Docker 作为高级容器引擎快速发展的同时&#xff0c;在Google内部&#xff0c;容器技术已经应用了很多年Borg系统运行管理着成干上万的容器应用。Kubernetes项目来源于Borg&#xff0c;可以说是集结了Borg设计思想的精华&#xff0c;并且吸收了Borg系统…

动态线程池设计与实现

为什么要有动态线程池 ThreadPoolExecutor 核心线程参数对某些业务不知到设置多少合适调整参数需要重新启动服务没有告警功能 设计思路 流程设计 库表抽象 更新操作流程图 代码实现 GitCode - 全球开发者的开源社区,开源代码托管平台

C++ 内部类

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目&#xff1a;C知识点的补充_Jason_from_China的博客-CSDN博客 概念概述 如果一个类定义在另一个类的内部&#xff0c;这个内部类就叫做内部类。内部类…

(02)python-opencv图像处理——更改颜色空间HSV

前言 1、更改颜色空间 1.1BGR 到 Gray 的示例 1.2 BGR 到 HSV 的示例&#xff1a; ​编辑 1.3 通过HSV进行颜色追踪 1.3.1hsv cv.cvtColor(frame, cv.COLOR_BGR2HSV) 1.3.2 BGR vs HSV&#xff1a; 1.3.3 为什么使用 HSV 颜色空间&#xff1f; 1.3.4 cv.inRange(hsv…

oracle-函数-instr()的妙用以及相似功能like

INSTR(C1,C2[,I[,J]]) 【功能】在一个字符串中搜索指定的字符,返回发现指定的字符的位置; 【说明】多字节符(汉字、全角符等)&#xff0c;按1个字符计算 【参数】 C1 被搜索的字符串 C2 希望搜索的字符串 I 搜索的开始位置,默认为1 J 第J次出现的位置,默认为1 【…

安全帽未佩戴预警系统 劳保防护用品穿戴监测系统 YOLO

在建筑、矿山、电力等高危行业中&#xff0c;工人面临着各种潜在的危险&#xff0c;如高空坠物、物体打击等。安全帽能够有效地分散和吸收冲击力&#xff0c;大大降低头部受伤的严重程度。一旦工人未正确佩戴安全帽&#xff0c;在遭遇危险时&#xff0c;头部将直接暴露在危险之…

Linux网络编程 -- 网络套接字预备与udp

本文主要介绍网络编程的相关知识&#xff0c;在正式介绍网络编程之前&#xff0c;我们得先了解一些前置的知识。 1、端口号 我们上网其实就是两种动作&#xff0c;一个是将远处的数据拉取到本地&#xff0c;另一个是把我们的数据发送给远端。其实大部分的网络通信行为都是用户…