数据卷(Data Volumes) 自定义镜像(dockerfile)

news2024/11/17 19:40:18

目录

一. 数据卷(Data Volumes)

        1.1 什么是数据卷

        1.2 为什么需要数据卷

        1.3 数据卷的作用

        1.4 数据卷的使用

二. 自定义镜像(dockerfile)

        2.1 什么是dockerfile

        2.2 自定义centos

        2.3 自定义tomcat


一. 数据卷(Data Volumes)

        1.1 什么是数据卷

        数据卷是宿主机中一个可供一个或多个容器使用的特殊目录,它绕过 UFS(联合文件系统),可以提供很多有用的特性

  • 一个数据卷可以在多个容器之间共享和重用
  • 当容器和数据卷绑定后,对数据卷的修改会立即同步
  • 对数据卷的更新,不会影响镜像
  • 卷会一直存在,直到没有容器使用
  • 一个容器可以被挂到多个数据卷

数据卷的使用,类似于 Linux 下对目录或文件进行 mount(磁盘挂载)

        1.2 为什么需要数据卷

  • Docker 容器删除后,在容器中产生的数据也会随之销毁,类似删库跑路,不安全
  • Docker 容器怎么和外部机器交换文件
  • 容器之间怎么进行数据交互
  • 解决:使用数据卷

        1.3 数据卷的作用

  • 容器数据持久化
  • 外部机器和容器间接通信
  • 容器之间数据交换

        1.4 数据卷的使用

1. 将宿主机的目录与容器的目录进行挂载,实现数据共享

#如果home目录下没有该文件夹,会自动帮你创建文件夹,并下载centos7
docker run -di --name c2 -v /home/javacy/data/:/home/javacy/data/ centos:7

下载完成 

比较 

结论:不管是宿主机还是容器,在指定的目录创建文件夹或者文件,都会被共享

2. 数据卷容器:容器与容器共享目录

数据卷容器:比如我创建了一个c4和一个c6的容器,将c4跟c6进行一个挂载,就相比于c4的数据卷容器里,装了一个c6

注意:分开执行
docker run -di -v /home/javacy/data/c4 --name c4 centos:7
docker run -di --volumes-from c4 --name c6 centos:7

下载成功 

去测试一下,我们在c4里面写东西

此时我们进入c6看看是否能看到c4写的东西

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

二. 自定义镜像(dockerfile)

        2.1 什么是dockerfile

        dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像,另外,使用Dockerfile去构建镜像好比使用pom去构建maven项目一样,有异曲同工之妙。简单来说就是用来制作镜像的文件

        2.2 自定义centos

1. 编辑Dockerfile文件(自定义的相对于网上的多了ifconfig命令)

vim mycentosDockerfile

2. 进入Dockerfile文件后,把下面代码放进去

#第一行的意思:以哪个一个官方的镜像,我自己做的镜像就是基于哪个镜像的
#第二行的意思:署名(作者)联系方式
#第三行的意思:在我自己做的镜像里执行该命令
#第四行的意思:同时下载一个网络工具
FROM centos:7
MAINTAINER javacy "javacy@qq.com"
RUN yum -y install vim
RUN yum install net-tools.x86_64 -y
CMD /bin/bash

3. 按 i 进入编辑模式,按 esc 退出编辑模式,最后按 :wq 进行退出并保存 

4. 可以进行查看是否保存成功 

5. 通过Dockerfile构建镜像

注意:最后那个点不是不小心加的,必须要加,否则你做镜像肯定失败
docker build -f mycentosDockerfile -t javacy/centos:v1.0 .

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

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

        2.3 自定义tomcat

1. 编辑Dockerfiile文件 

vim mytomcatDockerfile

2. 向 mytomcatDockerfile 编辑内容 

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

ENV workerDir /home/javacy/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/javacy/dockerfile/3/apache-tomcat-8.5.20/bin/catalina.sh","run"]

3. 上传安装包,因为我是在data运行的mytomcatDockerfile,所以必须把安装包传到data里

4. 通过Dockerfile构建镜像

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

5. 通过镜像启动容器进行测试

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

登录tomcat(32768)

6. 如果你想就直接8080的话,就改成 -p 8080:8080(宿主机端口:容器端口),容器名不要重复

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

登录tomcat(8080) 

        此外你还可以创建很多个tomcat,只要容器名不重复即可。后续部署项目时,只要在对应容器的tomcat中的webapp文件夹下放如war包即可。

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

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

相关文章

【学习记录】HC32F460USB——U盘IAP升级app

从头开始,万物从解压开始 直奔猪蹄,找到usb下的工程文件 开始移植 主要移植IAP的boot和fatfs的文件系统,fatfs官网去下载ff15.0版本,目前用这个 放到项目里 添加到工程文件中 改引脚,给USB放电 编译,可以…

java自动化之自动化框架项目(第三天-测试数据注入到测试方法)

接第二天 1.实现目标 这里我们是数据驱动方式,把数据注入到测试方法,在测试方法中就可以获取对象中的数据。 2.注入测试数据 上一篇我们已经把用例数据封装到对象并放到list中,这里我们把用例对象list中的对象分别放到Object类型的一维数…

element-upload 文件上传和图片上传

文件上传 element-upload介绍实际上的文件上传代码前端java后端 补充 element-upload介绍 element-ui是一个很常用的文件上传组件,他包括但不局限于只上传图片,很多时候用于系统的头像修改就是用这个组件 在官网element-ui(element-upload&a…

区块链游戏解说:什么是 Arcade Champion

作者:lesleyfootprint.network 编译:cicifootprint.network 数据源:Arcade Champion Dashboard 什么是 Arcade Champion Arcade Champion 代表了移动游戏世界的重大革新。它将经典街机游戏的怀旧与创新元素结合在一起,包括 NF…

《最新出炉》系列初窥篇-Python+Playwright自动化测试-33-处理https 安全问题或者非信任站点-上篇

1.简介 这一篇宏哥主要介绍playwright如何在IE、Chrome和Firefox三个浏览器上处理不信任证书的情况,我们知道,有些网站打开是弹窗,SSL证书不可信任,但是你可以点击高级选项,继续打开不安全的链接。举例来说&#xff0c…

redis中的分布式锁(setIfAbsent)(expire)

目录 应用场景 代码实例1: 代码实例2: setIfAbsent: expire: 举例说明: 代码实例3: 代码实例4: 还是一个同事问的一个问题,然后闲着没事就记录下来了。多人操作同一个保单&a…

(Linux学习二)文件管理基础操作命令笔记

Linux目录结构: bin 二进制文件 boot 启动目录 home 普通用户 root 超管 tmp 临时文件 run 临时运行数据 var 日志 usr 应用程序、文件 etc 配置文件 dev 文件系统 一、基础操作 在 Linux 终端中,你可以使用以下命令来清屏: clear 命令&am…

ubuntu2204部署hbase2.3.7

开启root 修改root用户的密码 sudo passwd rootSSH放行 sudo sed -i s/^#\?PermitRootLogin.*/PermitRootLogin yes/g /etc/ssh/sshd_config; sudo sed -i s/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g /etc/ssh/sshd_config;重启服务 sudo service ssh…

IDEA利用鼠标调整字体大小

就可以按住ctrl和鼠标调节代码字体的大小啦! 如果有用,记得给我来个赞~ 谢啦!

什么是生成式人工智能?

近年来,人工智能取得了重大进展,其中发展迅速的领域之一就是生成式人工智能。生成式人工智能是人工智能和深度学习的一个子领域,主要使用机器学习技 术根据现有数据训练算法和模型,生成诸如图像、文本、音乐、视频等新内容。 要更…

nginx 反向代理 与缓存功能

一 理论说明 (一)反向代理简介 反向代理:reverse proxy,指的是代理外网用户的请求到内部的指定的服务器,并将数据返回给用户的一种方式,这是用的比较多的一种方式。 即 代理服务机 Nginx 除了可以在企…

linux系统-----------搭建LNMP 架构

PHP(Hypertext Preprocessor 超文本预处理器)是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此,其也可…

如何使用便签快速分类工作待办事项

在日常工作和生活中,我们经常需要处理各种各样的待办事项。而有效地分类这些任务,可以帮助我们更好地管理时间和提高工作效率。使用便签是一种简单而实用的方法,下面将介绍如何利用好用便签来快速分类工作待办事项。 首先,你可以…

软考中级1(数据库系统工程师)

1.程序计数器 保存待读取指令的地址 累加器 保存原操作数和结果 2.DMA方式不需要CPU,由DMA控制器直接控制数据的传送 3.数据位n位,校验位k位,海明码满足的关系:2^k-1>nk 4.高速缓存Cache:位于CPU和主…

大数据分布式计算工具Spark实战讲解

PySpark 什么是PySpark? Spark是Apache基金会旗下的顶级开源项目,用于对海量数据进行大规模分布式计算。 PySpark是Spark的Python实现,是Spark为Python开发者提供的编程入口,用于以Python代码完成Spark任务的开发 PySpark不仅可…

三天学会阿里分布式事务框架Seata-SpringCloud Alibaba分布式基础案例搭建

锋哥原创的分布式事务框架Seata视频教程: 实战阿里分布式事务框架Seata视频教程(无废话,通俗易懂版)_哔哩哔哩_bilibili实战阿里分布式事务框架Seata视频教程(无废话,通俗易懂版)共计10条视频&…

记录工作中遇见问题、学习项

1、判空操作 Demo demo Optional .ofNullable(demoService.getById(id)) .orElseThrow(() -> new ServiceException("不存在id为" id "的数据")); 2、SQL方面 1、group by : GROUP BY 子句必须放在 WHERE 子句中的条件之后&#…

网络:IPv6

1、由于IPv4地址资源枯竭,所以产生了IPV6。 版本长度地址数量IPv432 bit4 294 967 296IPv6128 bit340 282 366 920 938 463 374 607 431 768 211 456 2、IPv6的基本报头在IPv4报头基础上,增加了流标签域,去除了一些冗余字段,使报…

Apache SeaTunnel 及 Web 功能部署指南(小白版)

在大数据处理领域,Apache SeaTunnel 已成为一款备受青睐的开源数据集成平台,它不仅可以基于Apache Spark和Flink,而且还有社区单独开发专属数据集成的Zeta引擎,提供了强大的数据处理能力。随着SeaTunnel Web的推出,用户…

Python异步IO库之uvloop使用详解

概要 在Python中,异步编程已经成为处理高并发和IO密集型任务的主要方式之一。而uvloop库则是一个专门针对异步IO操作进行优化的库,它能够显著提高异步程序的性能。本文将深入探讨uvloop库的使用方法、功能特性以及如何利用它来加速异步IO编程。 什么是uvloop库? uvloop是一…