Docker数据集与自定义镜像:构建高效容器的关键要素

news2025/2/26 11:36:28

目录

博客前言

一.数据卷

1.数据卷介绍

2.实战

宿主机和容器共享目录

 容器和容器之间共享目录

二.自定义镜像

1.自定义镜像介绍

2.实战

2.1自定义centos,具备vim及ifconfig作用

构建镜像

通过镜像运行一个容器进行测试

2.2自定义tomact(文件为相对目录)

构建镜像

 运行容器


博客前言

在当今的软件开发和运维领域,容器化技术已经成为了一种趋势。Docker作为其中的佼佼者,以其轻量级、可移植性和易于管理的特性,赢得了广大开发者和运维人员的青睐。在Docker的世界里,数据集和自定义镜像是两个核心概念,它们对于构建高效、稳定的容器化应用起着至关重要的作用。

本博客将带你深入探索Docker数据集与自定义镜像的奥秘。我们将从基础概念出发,逐步深入,解析Docker数据集的存储与持久化策略,以及如何构建和优化自定义Docker镜像。无论你是Docker的新手还是有一定经验的开发者,相信都能从中获得宝贵的启示和实践经验。

在接下来的篇章中,我们将一起探讨Docker数据集的创建、挂载和管理方法,了解如何在容器之间共享和重用数据,以及如何利用数据卷实现数据的持久化存储。同时,我们还将详细介绍如何从零开始构建自定义Docker镜像,包括选择基础镜像、安装和配置软件、优化镜像大小等关键步骤。

让我们一起踏上这场关于Docker数据集与自定义镜像的探索之旅,揭开构建高效容器的秘密武器,为应用容器化之路增添更多可能!

一.数据卷

1.数据卷介绍

Docker数据卷(Docker Volume)是Docker用于存储数据的一种机制,它使得数据可以在容器之间共享和持久化。数据卷的设计目的是独立于容器的生命周期,即使容器被删除,数据卷也不会被删除。因此,数据卷可以用来保存和持久化容器的数据,以便在需要时重新使用或共享

Docker数据卷可以看作是容器内的目录或文件,但它不属于联合文件系统(Union FileSystem),因此可以绕过联合文件系统提供的一些用于持续存储或共享数据的特性。数据卷可以在容器之间共享或重用数据,卷中的更改可以直接生效,并且数据卷中的更改不会包含在镜像的更新中。

要使用Docker数据卷,可以在运行容器时通过指定挂载数据卷的命令来创建和挂载数据卷。例如,使用`docker run -v`命令可以将宿主机的目录或文件挂载到容器的目录或文件中。在挂载数据卷时,还可以指定数据卷的读写权限,例如可读可写或只读。

除了直接挂载宿主机目录或文件作为数据卷外,Docker还提供了名为“volumes”的数据卷管理方式。使用“volumes”方式创建的数据卷由Docker管理,并且可以在多个容器之间共享和重用。这种方式的优点是数据卷的管理更加灵活和方便,可以更好地满足应用的需求。

总之,Docker数据卷是一种用于存储和持久化容器数据的机制,它可以在容器之间共享和重用数据,并提供了一些用于持续存储或共享数据的特性。通过合理使用Docker数据卷,可以更好地管理和使用Docker容器中的数据。

docker run -it --name mycentos7 centos:7 /bin/bash

2.实战

宿主机和容器共享目录

将docker中的centos的/liuzhu 目录用于 共享到宿主机中

docker run -di --name c2 -v /liuzhi:/liuzhi centos:7

 

 容器和容器之间共享目录

docker run -di -v /home/javaxl/data/c4 --name c4 centos:7
docker run -di --volumes-from c4 --name c6 centos:7

其中c4为数据卷容器,c6为普通容器,其中c4就起到一个桥接作用,我们可以通过docker inspect查看容器的详细情况

docker inspect c4
docker inspect c6

会发现c4、c6目录挂载情况是一样的

结论:不管c4、c6在指定目录创建文件夹还是文件,都会会被共享

二.自定义镜像

1.自定义镜像介绍

自定义镜像是通过轻量应用服务器的快照或容器镜像创建的。这种镜像包含了对应轻量应用服务器的磁盘数据或容器运行环境,用户可以使用自定义镜像来创建更多包含相同配置的轻量应用服务器或容器实例,提高部署和管理的效率。

此外,自定义镜像也可以被共享至云服务器ECS,进一步通过共享镜像创建ECS实例或更换操作系统,从而实现服务器的快速复制和迁移。

总的来说,自定义镜像是一种强大的工具,它允许用户快速复制和部署他们的服务器环境,无论是用于测试、开发还是生产环境。然而,需要注意的是,虽然创建自定义镜像本身不收费,但在使用镜像创建服务器或实例时,可能会产生相关的服务器或资源费用。

2.实战

2.1自定义centos,具备vim及ifconfig作用

创建文件夹

cd /liuzhi/software
mkdir mydocker
vi mycentosDockerfile

向 mycentosDockerfile 编辑内容  

FROM centos:7
MAINTAINER liuzhi "liuzhi@qq.com"
RUN yum -y install vim
RUN yum install net-tools.x86_64 -y
CMD /bin/bash
构建镜像
docker build -f mycentosDockerfile -t javaxl/centos:v1.0 .
通过镜像运行一个容器进行测试
docker run -it --name mc1 javaxl/centos:v1.0 /bin/bash

 

2.2自定义tomact(文件为相对目录)

通过vi命令进行创建文件 vi mytomcatDockerfile

FROM centos:7
MAINTAINER javaxl "javaxl@qq.com"

ENV workerDir /home/javaxl/dockerfile/3
WORKDIR $workerDir

ADD jdk-8u151-linux-x64.tar.gz $workerDir
COPY apache-tomcat-8.5.20.tar.gz $workerDir
RUN tar -xvf apache-tomcat-8.5.20.tar.gz apache-tomcat-8.5.20

ENV JAVA_HOME $workerDir/jdk1.8.0_151
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV TOMCAT_HOME $workerDir/apache-tomcat-8.5.20
ENV PATH $JAVA_HOME/bin:$TOMCAT_HOME/bin:$TOMCAT_HOME/lib:$PATH

EXPOSE 8080
ENTRYPOINT ["/home/javaxl/dockerfile/3/apache-tomcat-8.5.20/bin/catalina.sh","run"]
构建镜像
docker build -f mytomcatDockerfile -t javaxl/tomcat8:v1.0 .
 运行容器

通过代理8080端口号的方式进行访问

docker run -di --name mt1 -P javaxl/tomcat8:v1.0

直接通过80端口号进行创建

docker run -di --name mt2 -p  8080:8080 javaxl/tomcat8:v1.0

 

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

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

相关文章

人工智能_Centos7.9中CPU安装ChatGLM3-6B大模型_安装使用_010---人工智能工作笔记0105

从一个空的虚拟机开始安装: https://www.modelscope.cn/models/ZhipuAI/chatglm3-6b/files 可以看到这里有很多的数据文件,那么这里 这里点击模型文件就可以下载,这个就是chatglm3-6B的文件,需要点击每个文件,然后点击右边的下载,把文件都下载下来

Python3中真真假假True、False、None等含义详解

在Python中,不仅仅和类C一样的真假类似,比如1代表真,0代表假。Python中的真假有着更加广阔的含义范围,Python会把所有的空数据结构视为假,比如 [] (空列表)、 {} (空集合)、 (空字符…

初探2b blender

总结 按照youtube 教程 做了个雏形 心得 从正面, 侧面 视图整体上调整外轮廓流线型趋向, 比如正面看这个发型像个鸡蛋的外轮廓头发重要的是丝滑, 流畅 集束 层次 交错

Flutter开发进阶之Flutter Web加载速度优化

Flutter开发进阶之Flutter Web加载速度优化 通常使用Flutter开发的web加载速度会比较慢,原因是Flutter web需要加载的资源处于国外,以下是据此所做的相应优化。 一、FlutterWeb打包 flutter build web --web-renderer canvaskit使用新命令打包 flut…

面试经典150题——插入区间

"The future belongs to those who believe in the beauty of their dreams." - Eleanor Roosevelt 1. 题目描述 2. 题目分析与解析 2.1 思路一 解决这个问题的思路是基于区间排序和合并的经典算法。这个问题的关键在于如何处理新区间与现有区间的关系&#xff0c…

【C++入门】C++关键字 | 命名空间 | C++的输入输出

目录 0.C与C 1.C的关键字 2.命名空间 2.1域 2.2C中命名冲突问题 2.3命名空间定义 2.4命名空间使用 2.5命令空间的展开&头文件的展开 3.C的输入&输出 3.1cout&cin 3.1<<流插入运算符 3.2>>流提取运算符 0.C与C C是在C的基础之上&#xff…

九州金榜|家庭教育中孩子厌学的原因有哪些?

孩子的成长往往会受到家庭教育&#xff0c;社会环境&#xff0c;学校教育等因素影响&#xff0c;孩子厌学受家庭教育影响是一个重要因素&#xff0c;都是哪些因素会让孩子产生厌学情绪呢&#xff1f;下面九州金榜家庭教育分析一下因为家庭教育因素而让孩子产生厌学的原因&#…

Redis学习------实战篇----2024/02/28

1.集群的session共享问题 2.基于Redis实现共享session登录 //4.保存验证码到redisstringRedisTemplate.opsForValue().set(LOGIN_CODE_KEYphone,code,LOGIN_CODE_TTL, TimeUnit.MINUTES);RedisTemplate RedisTemplate使用的是JdkSerializationRedisSerializer存入数据&#xff…

不看后悔的2024年腾讯云服务器购买优惠活动汇总

腾讯云服务器多少钱一年&#xff1f;62元一年起&#xff0c;2核2G3M配置&#xff0c;腾讯云2核4G5M轻量应用服务器218元一年、756元3年&#xff0c;4核16G12M服务器32元1个月、312元一年&#xff0c;8核32G22M服务器115元1个月、345元3个月&#xff0c;腾讯云服务器网txyfwq.co…

二叉树(C/C++)

本篇将较为详细的介绍二叉树的相关知识&#xff0c;以及二叉树的实现。对于二叉树的相关知识&#xff0c;本篇介绍了其概念、特殊的二叉树、性质还有存储结构。 接着对于实现二叉树的每个函数都有其思路讲解&#xff0c;主要的函数分为&#xff1a;遍历&#xff1a;前中后序遍历…

redis-Redis主从,哨兵和集群模式

一&#xff0c;Redis的主从复制 ​ 主机数据更新后根据配置和策略&#xff0c; 自动同步到备机的master/slaver机制&#xff0c;Master以写为主&#xff0c;Slave以读为主。这样做的好处是读写分离&#xff0c;性能扩展&#xff0c;容灾快速恢复。 1.1 环境搭建 如果你的redi…

【HDFS】Decommision(退役) EC数据节点剩最后几个块卡住的问题

一、背景 近期操作退役EC集群的节点。在退役的过程中,遇到了一些问题。特此总结一下。 本文描述的问题现象是: 每一批次退役10个节点,完全退役成功后开始操作下一批。 但是,中间有一批次有2台节点的Under Replicated Blocks一直是1,不往下降。 处于Decommissioning状态卡…

iOS App冷启动优化:Before Main阶段

iOS应用冷启动时&#xff0c;在 UIApplicationMain(argc, argv, nil, appDelegateClassName)方法执行前&#xff0c;主要经历以下阶段&#xff1a; 1. 执行exec&#xff08;&#xff09;启动应用程序进程 2. 加载可执行文件&#xff0c;即将应用程序的Mach-O文件加载到内存…

跟着野火学FreeRTOS:第二段(堆存储管理)

F r e e R T O S FreeRTOS FreeRTOS从版本 V 9.0.0 V9.0.0 V9.0.0开始&#xff0c;内核对象所用的存储空间可以在编译时静态分配或在运行时动态分配&#xff0c;早期的版本不同时支持静态分配和动态分配&#xff0c;这里讲到的堆存储管理是和动态分配相关的。从版本 V 9.0.0 V9…

跨区域复制建筑UI输入框脚本迷你世界

--复制区域文件 --设置坐标起点&#xff0c;终点 --创建区域 --获取坐标id,data --星空露珠工作室制作 local pos1{x-16,y7,z28} local pos2{x28,y44,z-9} local block{num0} local str{} local str0{} local num0 local count0 local ui6 --几个输入框 local romath.random(…

【LeetCode:108. 将有序数组转换为二叉搜索树 + 二叉树+递归】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Vue3+springboot实现简单登录demo

Vue3从0搭建脚手架步骤【默认已安装node.js】 前置条件&#xff1a;默认已安装node.js、yarn 第一步&#xff1a;创建项目 选择任意一个空白文件夹如下&#xff1a; cmd进入该文件夹下的命令窗口模式&#xff0c;然后输入指令创建vue项目&#xff1a;vue create my-project …

Maya笔记 大纲视图、父子级、打组

文章目录 大纲视图打开大纲视图双层大纲视图 父子级快捷键大纲视图 组菜单操作快捷键操作 大纲视图 打开大纲视图 双层大纲视图 鼠标放到大纲视图最下边的…上&#xff0c;鼠标变成拖动&#xff0c;向上拖&#xff0c;可以拖出两个大纲视图&#xff0c;方便我们同时操作两个物…

[JavaWeb玩耍日记]HTML与CSS快速使用

目录 一.标签 二.指定css 三.css选择器 四.超链接 五.视频与排版 六.布局测试 七.布局居中 八.表格 九.表单 十.表单项 实验项目目录&#xff1a; 必要文件new.css: h1 {color:black; } span{color: #968D92;; } a {color: #000;text-decoration: none; } p {text-i…

水合三氯化铱(三氯化铱水合物)行业技术壁垒较高 应用范围有望扩展

水合三氯化铱&#xff08;三氯化铱水合物&#xff09;行业技术壁垒较高 应用范围有望扩展 水合三氯化铱又称三氯化铱水合物&#xff0c;分子式为IrCl33H2O&#xff0c;是一种无机化合物。水合三氯化铱外观呈绿色结晶或褐色粉末&#xff0c;可溶于水、丙酮和盐酸&#xff0c;难溶…