【Docker】Docker容器数据卷、容器卷之间的继承和DockerFIle的详细讲解

🚀欢迎来到本文🚀
🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。
🏀系列专栏:陈童学的日记
💡其他专栏:C++STL,感兴趣的小伙伴可以看看。
🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​
⛱️万物从心起,心动则万物动🏄‍♂️

在这里插入图片描述

前言:Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux系统 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker容器数据卷、容器卷之间的继承和DockerFIle的详细讲解

  • Docker中的容器数据卷的特点、创建和使用讲解
    • 容器数据卷的特点
    • 容器数据卷的创建和使用
  • Docker中容器卷之间的继承讲解
  • Dokcer中的DokcerFIle讲解

Docker中的容器数据卷的特点、创建和使用讲解

  Docker中的容器数据卷是一种用于持久化存储数据的特殊类型的目录或文件。它们允许容器之间共享数据,并且在容器被删除或重新创建时仍然保留数据。
在这里插入图片描述

容器数据卷的特点

容器数据卷具有以下特点:

  • 1.持久性:容器数据卷是在主机上的持久目录,它们不会受到容器的生命周期的影响。即使容器被删除,数据卷仍然存在。

  • 2.共享性:多个容器可以共享同一个数据卷,这样它们之间可以轻松地共享文件和数据。这对于多个容器之间的通信和数据共享非常有用。

  • 3.数据卷容器:可以创建一个专门用于管理数据卷的容器,其他容器可以通过挂载这个数据卷容器来访问其中的数据。这样可以使数据卷的管理更加灵活和方便。

  • 4.数据卷的更新:当数据卷中的内容被更新时,所有挂载该数据卷的容器都可以立即看到更新后的内容。这使得容器之间的数据同步更加简单。

容器数据卷的创建和使用

在Docker中,可以通过以下方式来创建和使用容器数据卷:

1.使用-v--volume选项来指定一个本地路径作为容器数据卷:

docker run -v /path/on/host:/path/in/container image_name

这样会将主机上的/path/on/host目录挂载到容器中的/path/in/container目录。

2.使用--mount选项来指定一个本地路径作为容器数据卷:

docker run --mount type=bind,source=/path/on/host,target=/path/in/container image_name

这种方式与上述的-v选项类似,但提供了更多的灵活性和选项设置。

3.使用数据卷容器:

首先创建一个数据卷容器:

docker create --name data_container -v /path/in/container image_name /bin/true

然后在其他容器中挂载该数据卷容器:

docker run --volumes-from data_container image_name

以上就是是Docker中容器数据卷的基本概念和用法啦。通过使用容器数据卷,可以方便地管理和共享数据,使得容器之间的数据交互更加便捷。

Docker中容器卷之间的继承讲解

  在Docker中,容器卷之间可以使用继承关系来共享和传递数据。当一个容器使用另一个容器的卷作为继承源时,它将获得对该卷中数据的访问权限。
  继承容器卷指是通过在一个容器中定义一个或多个卷,并在其他容器中使用相同的卷来实现的。当一个容器继承其他容器的卷时,它可以访问和修改这些卷中的数据。
在这里插入图片描述

下面让我们来看看Docker容器卷之间继承实现:

1.创建一个父容器:首先,你需要创建一个包含所需数据的父容器。可以使用命令docker run来创建一个含有卷的容器。例如,运行以下命令来创建一个名为parent_container的父容器,并将/data目录映射到卷中:

docker run -v /data --name parent_container image_name

2.继承卷的容器:接下来,你可以通过使用--volumes-from标志来创建一个新的子容器,并继承父容器中的卷。例如,运行以下命令来创建一个名为child_container的子容器,并继承parent_container中的卷:

docker run --volumes-from parent_container --name child_container image_name

3.访问继承的卷:在子容器中,你可以像访问本地目录一样访问继承的卷。例如,可以使用以下命令在子容器中查看/data目录中的文件:

docker exec -it child_container ls /data

4.修改继承的卷:子容器可以修改继承的卷中的数据。例如,可以使用以下命令在子容器中创建一个新文件:

docker exec -it child_container touch /data/new_file.txt

5.共享数据:当父容器或子容器修改继承的卷中的数据时,其他继承了同一卷的容器也可以访问到更新后的数据。

  需要我们注意的是,当父容器被删除时,继承的卷不会被自动删除。如果你希望删除继承的卷,可以使用docker rm -v命令。

以上就是关于容器卷之间继承的一些东东啦。继承容器卷是一种方便的方法,允许多个容器共享和访问相同的数据。它在一些场景中特别有用,比如在使用数据库容器时,多个应用程序容器可以共享数据库数据。

Dokcer中的DokcerFIle讲解

  Dockerfile是一个文本文件,用于定义如何构建Docker镜像。它包含一系列的指令(instructions),这些指令告诉Docker引擎如何构建镜像的每个步骤。下面是对Dockerfile的详细讲解:

1.基础镜像设置:在Dockerfile的第一行,通过指定一个基础镜像来开始构建过程。可以选择官方提供的基础镜像,也可以使用自定义的基础镜像。例如,使用官方的Ubuntu 20.04作为基础镜像:

FROM ubuntu:20.04

2.维护者信息:通过MAINTAINER指令可以指定该镜像的维护者信息。例如:

MAINTAINER Your Name <email@example.com>

3.拷贝文件:使用COPY指令将文件从主机复制到镜像中的指定位置。例如,将当前目录下的app.py文件复制到镜像的/app目录中:

COPY app.py /app/

4.执行命令:使用RUN指令在镜像中执行命令。可以执行任何有效的Shell命令或命令行工具。例如,安装Python和一些依赖包:

RUN apt-get update && apt-get install -y python3 python3-pip

5.设置工作目录:使用WORKDIR指令设置工作目录,后续的命令将在该目录下执行。例如,设置工作目录为/app:

WORKDIR /app

6.暴露端口:使用EXPOSE指令声明容器运行时需要暴露的端口。例如,暴露80端口:

EXPOSE 80

7.容器启动命令:使用CMD指令指定容器启动时要执行的命令。只能有一个CMD指令,如果有多个,只有最后一个会生效。例如,运行Python应用:

CMD ["python3", "app.py"]

7.构建镜像:通过在Dockerfile所在的目录中运行docker build命令来构建镜像。例如:

docker build -t image_name:tag .

在这里插入图片描述

  OK,以上是Dockerfile的一些常用指令和用法。通过编写Dockerfile,可以定义如何构建一个自定义的镜像,包括安装软件、拷贝文件、设置环境变量等。这样可以实现可重复、可自动化的镜像构建过程,还是比较方便滴。

如果本文对大家有所帮助的话,还望各位能给我点赞、收藏并评论一下,感谢各位💕!!! 另如果大家有什么疑问或者建议的话,欢迎评论区留言。

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

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

相关文章

SpringBoot+vue 大文件分片下载

学习链接 SpringBootvue文件上传&下载&预览&大文件分片上传&文件上传进度 VueSpringBoot实现文件的分片下载 video标签学习 & xgplayer视频播放器分段播放mp4&#xff08;Range请求交互过程可以参考这个里面的截图&#xff09; 代码 FileController …

Python爬虫——爬虫时如何知道是否代理ip伪装成功?

前言 在进行爬虫时&#xff0c;我们可能需要使用代理IP来伪装自己的身份&#xff0c;以避免被网站封禁。如何判断代理IP是否伪装成功呢&#xff1f;本篇文章将围绕这个问题展开讲解&#xff0c;同时提供Python代码示例。 1. 确认代理IP地址 首先&#xff0c;我们需要确认代理…

Leetcode-每日一题【剑指 Offer 04. 二维数组中的查找】

题目 在一个 n * m 的二维数组中&#xff0c;每一行都按照从左到右 非递减 的顺序排序&#xff0c;每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含有该整数。 示例: 现有矩阵 matri…

JMeter(二十四)、使用吞吐量控制器实现不同的用户操纵不同的业务

一、需求 需求&#xff1a;博客系统&#xff0c;模拟用户真实行为&#xff0c;80%的用户阅读文章&#xff0c;20%的用户创建文章&#xff0c;创建文章的用户随机的删除或者修改文章。 二、脚本实现 80%的用户查看文章 20%用户创建文章 根据post_id是否能整除2&#xff0c;决…

【Java】如何判断线程池任务执行完?

文章目录 前言1.需求分析2.实现概述3.具体实现3.1 统计完成任务数3.2 FutureTask3.3 CountDownLatch和CyclicBarrier 小结 前言 论是在项目开发中&#xff0c;还是在面试中过程中&#xff0c;总会被问到或使用到并发编程来完成项目中的某个功能。 例如某个复杂的查询&#xf…

嵌入式开发学习(STC51-12-I2C/IIC)

内容 在数码管右3位显示数字&#xff0c;从0开始&#xff0c;按K1键将数据写入到EEPROM内保存&#xff0c;按K2键读取EEPROM内保存的数据&#xff0c;按K3键显示数据加1&#xff0c;按K4键显示数据清零&#xff0c;最大能写入的数据是255&#xff1b; I2C介绍 I2C简介 I2C&…

第一百二十二天学习记录:C++提高:STL-vector容器(上)(黑马教学视频)

vector基本概念 功能&#xff1a; vector数据结构和数组非常相似&#xff0c;也称为单端数组 vector与普通数组区别&#xff1a; 不同之处在于数组是静态空间&#xff0c;而vector可以动态扩展 动态扩展&#xff1a; 并不是在原空间之后续接新的空间&#xff0c;而是找更大的内…

中国政府版 Windows 10 开发完成,即将大规模推广

早在今年 3 月 20 日&#xff0c;就有媒体曝光中国政府专用 Windows 10 已经完成第一版。而就在今天微软在上海举办的发布会中&#xff0c;微软再次透露了中国政府版 Windows 10 的最新情况——已经开始试点测试。这就意味着政府版 Windows 10 或很快大规模推广。 据了解&#…

基于Dockerfile构建镜像应用

目录 一、镜像概述 二、镜像构建方式 三、镜像构建案例 3.1、基于已有容器创建镜像 3.2、基于本地模板创建镜像 3.3、基于Dockerfile构建镜像 3.3.1、Docker 镜像结构 3.3.2、Dockerfile介绍 3.3.3、Dockerfile详解 3.3.4、Dockerfile构建SSHD镜像 3.3.5、Dockerfile…

clickhouse断电重启故障解决方案

业务场景 公司的一个日志系统用到了clickhouse。一线运维反映说有个生产环境因为异常断电造成服务器重启。在执行日志系统的启动脚本时&#xff0c;一直报clickhouse启动不起来&#xff0c;日志系统无法使用。 问题排查 通过阅读启动脚本代码&#xff0c;以及启动日志系统&a…

1.1k star,推荐一款程序员摸鱼神器

如果你在搬砖的过程中&#xff0c;想要看书、听歌、看图、看漫画等等&#xff0c;那么我建议你看下这个软件&#xff0c;之前也有推荐过&#xff0c;目前新的版本功能做了完善。 不过有个尴尬的点就是&#xff0c;作者增加了会员功能&#xff0c;但是对于基本使用还是没问题的…

react ant add/change created_at

1.引入ant的 Table import { Table, Space, Button, message } from antd; 2.获得接口的数据的时候增加上创建时间 const response await axios.get(${Config.BASE_URL}/api/v1/calculation_plans?token${getToken()});if (response.data.message ok) {const data respon…

Go学习第五天

Golang中面向对象类的表示与封装 package mainimport "fmt"// 如果类名首字母大写&#xff0c;表示其他包也能够访问 type Hero struct {// 如果类的属性首字母大写&#xff0c;表示该属性是对外能够访问的&#xff0c;否则的话只能够类的内部访问Name stringAd …

安全文件传输的重要性及其对企业的影响

在当今的信息时代&#xff0c;企业之间的文件传输已经成为日常工作的重要组成部分。无论是在商务合作、人力资源还是财务审计等方面&#xff0c;文件传输都发挥着关键的作用。然而&#xff0c;随着网络技术的发展&#xff0c;网络安全问题也日益突出&#xff0c;泄漏、篡改、丢…

SpringBoot之Actuator基本使用

SpringBoot之Actuator基本使用 引入分类常用接口含义healthbeansconditionsheapdumpmappingsthreaddumploggersmetrics 引入 <!-- actuator start--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

webpack基础知识四:说说webpack中常见的Plugin?解决了什么问题?

一、是什么 Plugin&#xff08;Plug-in&#xff09;是一种计算机应用程序&#xff0c;它和主应用程序互相交互&#xff0c;以提供特定的功能 是一种遵循一定规范的应用程序接口编写出来的程序&#xff0c;只能运行在程序规定的系统下&#xff0c;因为其需要调用原纯净系统提供…

TCP的三次握手和四次挥手······详解

1、三次握手 三次握手是建立连接的过程 如图大致为三次握手的流程图&#xff1a; 当客户端对服务端发起连接时&#xff0c;会先发一个包连接请求数据&#xff0c;去询问能否建立连接&#xff0c;该数据包称为 “SYN”包 然后&#xff0c;如果对方同意连接&#xff0c;那么…

【新版系统架构补充】-传输介质、子网划分

传输介质 双绞线&#xff1a;无屏蔽双绞线UTP和屏蔽双绞线STP&#xff0c;传输距离在100m内 网线安装标准&#xff1a; 光纤&#xff1a;由纤芯和包层组成&#xff0c;分多模光纤MMF、单模光纤SMF 无线信道&#xff1a;分为无线电波和红外光波 通信方式和交换方式 单工…

目标检测与跟踪 (1)- 机器人视觉与YOLO V8

目录 1、研究背景 2. 算法原理及对比 2.1 点对特征&#xff08;Point Pairs&#xff09; 2.2 模板匹配 2.3 霍夫森林 2.4 深度学习 3、YOLO家族模型演变 4、YOLO V8 1、研究背景 机器人视觉识别技术是移动机器人平台十分关键的技术&#xff0c;代表着机器人智能化、自动化…

台灯应该买什么样的才能护眼?教大家如何挑选护眼灯

家里顶灯太暗了且高度太高&#xff0c;还是原始的LED灯&#xff0c;晚上用着眼睛都有点难受&#xff0c;还好遇到了儿童护眼灯。下面小编为大家介绍下儿童护眼灯哪个牌子好&#xff1f;什么护眼台灯比较专业 护眼台灯怎么样选择 1、照度级别 台灯照度级别分为 A 级和 AA 级。…