Docker使用数据卷自定义镜像Dockerfile

目录

一、数据卷

1.1、简介

1.2、用途

1.3、特性:

1.4、数据卷相关操作

1.5、使用情况

二、自定义镜像Dockerfile

2.1、Dockerfile

2.1、使用情况

2.3、具体操作

a、自定义centos

创建文件   

 编辑内容

制作镜像

测试

b、自定义tomcat

 创建文件   

编辑内容 

制作镜像

构建镜像

测试


一、数据卷

有数据卷就可以直接从数据卷查看日志,不用一个一个进去查看日志了

1.1、简介

数据卷是Docker容器中用于持久化存储数据的一种机制。数据卷可以在容器之间共享和重用,使得容器之间可以更加灵活地共享数据。数据卷可以在容器启动时被创建,并且可以在容器停止或删除时保留数据。数据卷可以存储在宿主机的文件系统中,也可以存储在网络存储中,如网络文件系统(NFS)或云存储服务。数据卷的使用可以帮助用户更好地管理容器中的数据,并且可以提高容器的可移植性和可靠性。

1.2、用途

1. 数据持久化:数据卷可以用于持久化存储容器中的数据,确保数据在容器重启或删除后仍然存在。

2. 数据共享:多个容器可以共享同一个数据卷,以便它们之间可以共享数据。

3. 数据备份和恢复:通过使用数据卷,可以更容易地备份和恢复容器中的数据。

4. 数据迁移:数据卷可以用于将容器中的数据迁移到其他地方,如不同的主机或云存储服务。

5. 数据共享和协作:多个团队或应用程序可以共享同一个数据卷,以便它们之间可以协作和共享数据。

总的来说,数据卷可以帮助用户更好地管理容器中的数据,提高容器的可靠性和可移植性,并促进容器之间的数据共享和协作。

1.3、特性:

  • 在容器之间共享和重用
  •  修改会立马生效
  • 更新,不会影响镜像
  • 默认会一直存在,即使容器被删除数据卷相关操作

1.4、数据卷相关操作

   1.创建数据卷

     docker volume create my-vol

     此时,数据卷默认会放到/var/lib/docker/volumes路径下,会发现所新建的数据卷位置,查看命令如下:

     ## 参数可以为数字“1”,字母L:大小写均可,但效果不一样

     ls -1 /var/lib/docker/volumes

   2.查看所有的数据卷

     docker volume ls

   3.查看指定数据卷的详细信息(显示一个JSON格式的数据)

     docker volume inspect my-vol

  

   4.删除一个volume

     docker volume rm my-vol

   

     注1:数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷,

          并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷,无主的数据卷可能会占据很多空间,

          所以要及时删除

   ## 挂载数据卷,最好是通过run而非create/start创建启动容器

   ## create/start命令创建启动容器后,再挂载数据卷相当麻烦,要修改很多配置文件,但并非不可以

1.5、使用情况

1、数据卷------------宿主机与容器共享目录

docker run -di --name c2 -v /home/shasha/data/:/home/shasha/data/ centos:7

docker run   启动容器

-di启动不进入

-v挂载

shasha 自己取的名字,查看没有这个目录,也没关系会自己创建

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       7         eeb6ee3f44bd   2 years ago   204MB
[root@localhost ~]# cd /home/
[root@localhost home]# ll
总用量 0
drwxr-xr-x. 3 root root 18 2月  28 16:37 shasha
[root@localhost home]# cd  shasha/
[root@localhost shasha]# ll
总用量 0
drwxr-xr-x. 2 root root 6 2月  28 16:37 data
[root@localhost shasha]# cd data/
[root@localhost data]# ll
总用量 0
[root@localhost data]#

 下好后,就可以在home下查到shasha,切进去就有data,查看data里面是没有文件的

[root@localhost data]# docker exec -it c2 /bin/bash      ----------------进入容器
[root@d01495d52976 /]# pwd                                        ---------------显示在根目录下
/
[root@d01495d52976 home]# cd /home/shasha/data/     --------------进入data目录
[root@d01495d52976 data]#

假如data是tomcat日志

[root@d01495d52976 data]# echo  tomcatrun >123.txt
[root@d01495d52976 data]# ll
total 4
-rw-r--r--. 1 root root 10 Feb 28 08:57 123.txt
[root@d01495d52976 data]# pwdread escape sequence
[root@localhost data]# ll
总用量 4
-rw-r--r--. 1 root root 10 2月  28 16:57 123.txt
[root@localhost data]# cat 123.txt                              ---------  查看日志
tomcatrun
[root@localhost data]#

2、数据卷容器-------容器与容器共享目录

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

创建c4,然后绑定到c6,,c6里面也有/home/javaxl/data/c4

 

假设这是 echo operate  >readme.txt上传文件 

进到c6 ,发现可以看见c4里面的日志,就可以cat readme.txt

 

二、自定义镜像Dockerfile

2.1、Dockerfile

Dockerfile是一个文本文件,其中包含了一系列用于构建Docker镜像的指令和配置。通过在Dockerfile中编写这些指令,用户可以定义镜像中包含的文件、环境变量、运行命令等内容,从而实现定制化的镜像构建过程。Dockerfile通常用于自动化构建过程,使得镜像的构建过程更加简单、可重复和可管理。

作用:制作镜像文件

2.1、使用情况

1. 需要在多个环境中部署相同的应用程序或系统配置。通过创建自定义镜像,可以在不同的环境中快速部署相同的配置,提高部署效率。

2. 需要定制化的操作系统或应用程序。通过创建自定义镜像,可以在镜像中预先安装所需的软件包、配置文件等,以满足特定的需求。

3. 需要在本地开发环境和生产环境之间保持一致性。通过创建自定义镜像,可以在本地开发环境中构建和测试应用程序,并将相同的镜像部署到生产环境中,确保一致性。

4. 需要加密或保护敏感数据。通过创建自定义镜像,可以在镜像中加密或隐藏敏感数据,以确保数据安全性。

总的来说,自定义镜像可以帮助用户快速部署、定制化和保护应用程序或系统,提高工作效率和数据安全性。

具体:docker search找不到的时候

没有ipconfig这个查看IP命令,因为外部面试启动Centos7容器,cenos7现在只有204MB,相当于拓展功能没有了,

:官方版本提供的镜像是不完整的相当于阉割版本

解决办法:去容器里下载--------------------会特别慢

yum  install -y ifconfig

2.3、具体操作

a、自定义centos

创建文件   

vi   mycentosDockerfile          

mycentosDockerfile       名字

 编辑内容

向 mycentosDockerfile编辑内容

按i进入编辑模式

按ESC   :wq退出并保存

FROM centos:7
MAINTAINER shasha"shasha@qq.com"
RUN yum -y install vim
RUN yum install net-tools.x86_64 -y
CMD /bin/bash
制作镜像

后面注意有点必须加上去

docker build 制作镜像                 

-f       依靠哪个文件做镜像

-f        mycentosDockerfile其实可以省略,但是创建时名字必须用Dockerfile,不能用自己创建的名字了

shasha          做的镜像名字

1.0版本

docker build -f mycentosDockerfile -t shasha/centos:v1.0 .

失败重启一遍再运行

测试

通过镜像运行一个容器进行测试  ,发现都可以执行ifconfig

mc1是名字,换一个名字,再运行一遍就又有一个ip,相当于虚拟机里面的虚拟机

 

docker run -it --name mc1 javaxl/centos:v1.0 /bin/bash

 

b、自定义tomcat

 创建文件   

vi   mytomcatDockerfile          

mytomcatDockerfile          名字

编辑内容 

 向 mytomcatDockerfile   编辑内容

按i进入编辑模式

按ESC   :wq退出并保存

FROM centos:7
MAINTAINER sha"sha@qq.com"ENV workerDir /home/sha/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/sha/dockerfile/3/apache-tomcat-8.5.20/bin/catalina.sh","run"]
制作镜像

ADD添加并解压

默认进入--------------\,所有workerDir改路径

OOPY   复制

RUM执行解压包

ENV配置环境变量

EXPOSE         向外暴露端口

 

docker build -f mytomcatDockerfile -t javaxl/tomcat8:v1.0 .

构建镜像

docker  build -f mytomcatDockerfile -t sha/tomcat8:v1.0
测试

自动分配ip,启动端口

mt1-------名字

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

 

如果就想用8080,大写-P改成小写的,名字也换了

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

 

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

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

相关文章

Windows安装VNC连接工具并结合cpolar实现远程内网Ubuntu系统桌面

文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 测试…

4.1 统计学基本概念

1、统计学含义 统计学是一门收集、处理、分析、解释数据并从数据中得出结论的科学 统计学的对象是数据。 数据的形式:分数字和文字。 2、数据分析步骤 收集数据——处理数据——分析数据——解释数据 数据收集——取得统计数据数据处理——将数据用图表等形式展…

qml 项目依赖

文章目录 出现的问题最终对比下一步 把 apptestQml3_6.exe 放到一个单独目录下,执行 windeployqt.exe ./apptestQml3_6.exe但是出了很多问题,根本运行不起来。 但是在release目录下执行下,程序能跑起来。 根据错误提示,进行添加。…

C#,动态规划(DP)金矿问题(Gold Mine Problem)的算法与源代码

1 金矿问题(Gold Mine Problem) 给定一个N*M尺寸的金矿,每个点都有一个非负数表示当前点所含的黄金数目,最开始矿工位于第一列,但是可以位于任意行。矿工只能向右,右上,右下三个方向移动。问该…

如何在Linux使用Docker部署Nexus容器并实现公网访问本地仓库【内网穿透】

文章目录 1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定Nexus公网地址7. 固定地址访问Nexus Nexus是一个仓库管理工具,用于管理和组织软件构建过程中的依赖项和构件。它与Maven密切相关,可…

Windows虚拟主机如何开启网页debug模式

前不久,有客户咨询想要知道如何开启网页debug模式,以便后期他网站出现异常可以自行排查。这边了解到他当前使用的是Hostease 的Windows 虚拟主机,而开启网页debug模式的操作步骤如下: 1.Hostease的Windows虚拟主机都是带Plesk面板的,因此需要…

HarmonyOS—开发云数据库

您可以在云侧工程下开发云数据库资源,包括创建对象类型、在对象类型中添加数据条目、部署云数据库。 创建对象类型 对象类型(即ObjectType)用于定义存储对象的集合,不同的对象类型对应的不同数据结构。每创建一个对象类型&#…

盘点6个最受欢迎的 Vue.js UI 库

在2024年,随着Vue.js的不断普及和发展,这个轻量级、易于学习的JavaScript框架在前端开发者中的受欢迎程度日益上升。Vue.js之所以受到青睐,很大一部分原因是其庞大的生态系统,特别是众多的UI库,这些库提供了预先构建的…

Cadence Allegro PCB设计88问解析(三十四) 之 Allegro 中 DDR等长处理

一个学习信号完整性仿真的layout工程师 在进行PCB设计时 ,会遇到一些单端的信号要做等长处理,比如DDR的数据线,交换机之间的数据线之类的。这时需要我们建立match group,来做等长。下面简单介绍在Allegro中怎么做等长:…

【c语言】探索联合和枚举---解锁更多选择

前言 上一篇 讲解的是结构体相关知识,接着本篇主要讲解的是 联合和枚举 相关知识 结构体、联合体和枚举都属于 自定义类型。 那么接下来就跟上我的节奏,准备发车~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误&#xf…

Django前后端分离之后端基础3

12 案例:登录_哔哩哔哩_bilibili 参考大佬的B站视频教程笔记 目录 登录接口的实现会话机制成功后的信息保存: 中间件的使用,解决登录保护使未登录过的用户进行登录 Form组件 - 主要作用: Form组件信息的配置 ModelForm组件…

【MySQL】MySQL数据管理——DDL数据操作语言(数据表)

目录 创建数据表语法列类型字段属性SQL示例创建学生表 查看表和查看表的定义表类型设置表的类型 面试题:MyISAM和InnoDB的区别设置表的字符集删除表语法示例 修改表修改表名语法示例 添加字段语法示例 修改字段语法示例 删除字段语法示例 数据完整性实体完整性域完整…

使用Fragments(片段)提升你的Vue.js开发体验

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

HCIA-Datacom实验指导手册:6 构建基础 WLAN 网络

HCIA-Datacom实验指导手册:6 构建基础 WLAN 网络 一、实验介绍:二、实验拓扑:三、实验目的:四、配置步骤:1.掌握ap上线的配置方式和上线过程。ac配置验证 步骤 2 掌握隧道模式和旁挂模式下ac的配置。步骤 3 掌握查看ap…

【Vue3】回顾watch,学习watchEffect

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

mount命令最新详细教程

背景 需要在设备上面,自动化运行u盘里面的脚本,并且进入一个产测模式。因此实际使用了这个mount命令,所以,写了这么一篇供大家参考。 一. 定义 mount命令在Linux和类Unix系统中用于挂载文件系统,即将存储设备…

数仓模型设计方法论

在当今大数据时代,数据已经成为企业最重要的资产之一。而数据仓库作为企业数据管理和分析的核心基础设施,其设计方法论对于企业的数据治理和决策分析至关重要。本文将探索数仓模型设计的方法论,帮助读者更好地理解和应用数仓模型设计。 一、…

从零开始手写RPC框架(1)

学习java后端也有一段时间了,在网上寻一些教程和github上的开源库,学习从零开始手写一个RPC,学习各位大牛的代码适当修改,并贴上自己的一些见解和注释。 目录 RPC简介RPC和HttpClient的区别和共同点常见RPC框架 RPC框架设计常见序…

ISP代理是什么?怎么用?

在跨境出海业务中,代理IP对于您的在线任务至关重要,尤其是对于那些运行多个帐户的人来说。为您的帐户选择正确类型的代理对于确保帐户安全非常重要,劣质的IP容易使账号遭受封号风险。IPFoxy的多种代理IP类型应用范围各有侧重,其中…

html5移动端开发面试,2024年Android开发者常见面试题

Java相关 无论什么级别的Android从业者,Java作为Android开发基础语言。不管是工作还是面试中,Java都是必考题。如果不懂Java的话,薪酬会非常吃亏(美团尤为重视Java基础) 详细介绍了Java泛型、注解、并发编程、数据传…