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

目录

博客前言

一.数据卷

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 $workerDirADD 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.20ENV 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:$PATHEXPOSE 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.rhkb.cn/news/268180.html

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

相关文章

【IO流系列】字符流练习(拷贝、文件加密、修改文件数据)

字符流练习 练习1:文件夹拷贝1.1 需求1.2 代码实现1.3 输出结果 练习2:文件加密与解密2.1 需求2.2 代码实现2.3 输出结果 练习3:修改文件数据(常规方法)3.1 需求3.2 代码实现3.3 输出结果 练习4:修改文件数…

CSP-201712-2-游戏

CSP-201712-2-游戏 解题思路 初始化变量:定义整数变量n和k,分别用来存储小朋友的总数和淘汰的特定数字。然后定义了num(用来记录当前报的数)和peopleIndex(用来记录当前报数的小朋友的索引)。 初始化小朋…

无法访问云服务器上部署的Docker容器(二)

说明:记录一次使用公网IP 接口地址无法访问阿里云服务接口的问题; 描述 最近,我使用Docker部署了jeecg-boot项目,部署过程都没有问题,也没有错误信息。部署完成后,通过下面的地址访问后端Swagger接口文档…

react useMemo 用法

1,useCallback 的功能完全可以由 useMemo 所取代,如果你想通过使用 useMemo 返回一个记忆函数也是完全可以的。 usecallback(fn,inputs)is equivalent to useMemo(()> fn, inputs). 区别是:useCallback不会执行第一个参数函数,而是将它返…

获取当前数据 上下移动

点击按钮 上下移动 当前数据 代码 // 出国境管理 登记备案人员列表 <template><a-row><a-col span"24"><a-card :class"style[a-table-wrapper]"><!-- 出国境 登记备案人员列表 --><a-table:rowKey"records >…

sql 注入 之sqli-labs/less-6 双注入,双引号报错注入

和第五关类似&#xff0c;只不过闭合符号是双引号 1&#xff0c;查数据库 1"and%20(updatexml(1,concat(0x7e,(select%20database()),0x7e),1))%20-- 2.查表 内容有多行&#xff0c;所以使用limit依次查询 1"and%20(updatexml(1,concat(0x7e,(select%20table_nam…

【Linux系统化学习】线程概念

目录 线程的概念 线程的引出 什么是线程 理解线程比进程更加的轻量化 线程的优点 现成的缺点 线程异常 线程用途 Linux进程VS线程 线程的简单现象 线程的概念 有关操作系统的书籍或者课本都会这样描述线程&#xff1a; 线程是比进程轻量化的一种执行流线程是进程内部…

利用小蜜蜂AI智能问答ChatGPT+AI高清绘图生成图文故事案例

利用小蜜蜂AI智能问答ChatGPTAI高清绘图生成图文故事案例 这段时间利用小蜜蜂AI网站做了一些编程、绘图以及数据分析方面的案例。再过几个月&#xff0c;我的大孙子就要出生了。我要用小蜜蜂AI智能问答和AI高清绘图为大孙子生成一个1-9的数字图文故事。 小蜜蜂AI网站可以扫如…

前端打包部署(黑马学习笔记)

我们的前端工程开发好了&#xff0c;但是我们需要发布&#xff0c;那么如何发布呢&#xff1f;主要分为2步&#xff1a; 1.前端工程打包 2.通过nginx服务器发布前端工程 前端工程打包 接下来我们先来对前端工程进行打包 我们直接通过VS Code的NPM脚本中提供的build按钮来完…

【HTML5】浏览器不能显示字体报错Failed to decode downloaded font问题解决

把网上的项目中字体通过链接保存下来在本地上使用&#xff0c;在本地服务器上运行站点发现&#xff0c;用Chrome浏览器访问的时候&#xff0c;出现错误提示不能正常显示字体&#xff0c;怎么解决呢&#xff0c;看看怎么搞。 文章目录 发现问题提示警告提示错误 字体检查打开文件…

Redisson限流算法

引入依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.12.3</version> </dependency>建议版本使用3.15.5以上 使用 这边写了一个demo示例&#xff0c;定…

C++ //练习 10.7 下面的程序是否有错误?如果有,请改正。

C Primer&#xff08;第5版&#xff09; 练习 10.7 练习 10.7 下面的程序是否有错误&#xff1f;如果有&#xff0c;请改正。 (a) vector<int>vec; list<int> lst; int i;while(cin>>i)lst.push_back(i);copy(lst.cbegin(), lst.cend(), vec.begin());(b) …

Unity(第二十二部)官方的反向动力学一般使用商城的IK插件,这个用的不多

反向动力学&#xff08;Inverse Kinematic&#xff0c;简称IK&#xff09;是一种通过子节点带动父节点运动的方法。 正向动力学 在骨骼动画中&#xff0c;大多数动画是通过将骨架中的关节角度旋转到预定值来生成的&#xff0c;子关节的位置根据父关节的旋转而改变&#xff0c;这…

苍穹外卖学习 Day10 Day11 Day12

前言 用于记录苍穹外卖Day10、Day11、Day12的学习 Day10 订单状态定时处理 来电提醒 客户催单 订单状态定时处理 Spring Task Spring Task是一个任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑&#xff08;定时自动执行某段Java代码&#xff09; cron表…

ElasticSearch之suggester API

写在前面 当我们在使用搜索引擎进行的查询到时候&#xff0c;如果是输入错误的话&#xff0c;搜索引擎会给出一些搜索建议&#xff0c;如下&#xff1a; 在es中也提供了类似的功能&#xff0c;叫做suggester API。 1&#xff1a;原理和种类 原理是将查询的信息分为很多个词…

Python并发编程:多线程-信号量,Event,定时器

一 信号量 信号量也是一把锁&#xff0c;可以指定信号量为5&#xff0c;对比互斥锁同一时间只能有一个任务抢到锁去执行&#xff0c;信号量同一时间可以有5个任务拿到锁去执行&#xff0c;如果说互斥锁是合租房屋的人去抢一个厕所&#xff0c;那么信号量就相当于一群路人争抢公…

基于springboot+vue的在线考试系统(源码+论文)

文章目录 目录 文章目录 前言 一、功能设计 二、功能页面 三、论文 前言 现在我国关于在线考试系统的发展以及专注于对无纸化考试的完善程度普遍不高&#xff0c;关于对考试的模式还大部分还停留在纸介质使用的基础上&#xff0c;这种教学模式已不能解决现在的时代所产生的考试…

前端【技术类】资源学习网站整理(那些年的小网站)

学习网站整理 值得分享的视频博主&#xff1a;学习网站链接 百度首页的资源收藏里的截图&#xff08;排列顺序没有任何意义&#xff0c;随性而已~&#xff09;&#xff0c;可根据我标注的关键词百度搜索到这些网站呀&#xff0c;本篇末尾会一一列出来&#xff0c;供大家学习呀 …

3.3日学习打卡----初学Redis(一)

3.3日学习打卡 目录&#xff1a; 3.3日学习打卡NoSQL为什么要用NoSQL什么是NoSQL?NoSQL的四大分类关系型数据库和非关系型数据及其区别NoSQL经典应用 RedisRedis是什么?Linux下安装RedisDocker下安装Redis基本知识 NoSQL 为什么要用NoSQL 单机Mysql的美好年代 在90年代&…

探讨苹果 Vision Pro 的 AI 数字人形象问题

Personas 的设计模糊性&#xff1a; 部分人认为这种模糊设计可能是出于安全考虑&#x1f6e1;️。安全角度&#xff1a;Personas 代表着你的 AI 数字形象&#xff0c;在创建时&#xff0c;它相当于你的 AVP&#xff08;生物识别扫描器的存在增加了冒充的难度&#xff09;。如果…