当前位置: 首页 > news >正文

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

目录

一. 数据卷(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 $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/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包即可。

相关文章:

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

目录 一. 数据卷(Data Volumes) 1.1 什么是数据卷 1.2 为什么需要数据卷 1.3 数据卷的作用 1.4 数据卷的使用 二. 自定义镜像(dockerfile) 2.1 什么是dockerfile 2.2 自定义centos 2.3 自定义tomcat 一. 数据卷(Data…...

数据库管理-第156期 Oracle Vector DB AI-07(20240227)

数据库管理156期 2024-02-27 数据库管理-第156期 Oracle Vector DB & AI-07(20240227)1 Vector相关DDL操作可以在现有的表上新增vector数据类型的字段:可以删除包含vector数据类型的列:可以使用CTAS的方式,从其他有…...

CASAtomic原子操作详解

什么是原子操作?如何实现原子操作? 我们在接触到事务的时候,了解到事务的一大特性是原子性,一个事务要么全部执行、要么全部不执行。 并发里的原子性和事务里的原子性有一样的内涵和概念。假定有2个操作A和B都包含多个步骤…...

真机测试——关于荣耀Magic UI系列HBuilder真机调试检测不到解决办法

​​​​​出现这种状况怎么办 1、开启USB调试 2、重点来了——我们要选择USB配置,选择音频来源 3、连接OK...

代理IP安全问题:在国外使用代理IP是否安全

目录 前言 一、国外使用代理IP的安全风险 1. 数据泄露 2. 恶意软件 3. 网络攻击 4. 法律风险 二、保护国外使用代理IP的安全方法 1. 选择可信的代理服务器 2. 使用加密协议 3. 定期更新系统和软件 4. 注意网络安全意识 三、案例分析 总结 前言 在互联网时代&…...

SonarLint 疑难语法修正

/*** 投诉率统计(厂端)* 1.通过售后小区分组统计* 2.通过经销商分组统计* param kpiComplaintRateQueryVO 查询参数* return 投诉率统计数据*/ApiOperation(value "厂端投诉率统计维度查询")PostMapping("/vcdc/ratestatis")public List<KpiComplaintR…...

MurmurHash算法

MurmurHash&#xff1a;(multiply and rotate) and (multiply and rotate) Hash&#xff0c;乘法和旋转的hash 算法。 一、哈希函数 散列函数&#xff08;英语&#xff1a;Hash function&#xff09;又称散列算法、哈希函数&#xff0c;是一种从任何一种数据中创建小的数字“…...

CSRF靶场实战

DVWA靶场链接&#xff1a;https://pan.baidu.com/s/1eUlPyB-gjiZwI0wsNW_Vkw?pwd0b52 提取码&#xff1a;0b52 DVWA Low 级别打开靶场&#xff0c;修改密码 复制上面的 url&#xff0c;写个简单的 html 文件 <html <body> <a hrefhttp://127.0.0.1/DVWA/vulne…...

小程序性能优化

背景 在开发小程序的过程中我们发现&#xff0c;小程序的经常会遇到性能问题&#xff0c;尤其是在微信开发者工具的时候更是格外的卡&#xff0c;经过排查发现&#xff0c;卡顿的页面有这么多的js代码需要加载&#xff0c;而且都是在进入这个页面的时候加载&#xff0c;这就会…...

C++拿几道题练练手吧

第 1 题 【 问答题 】 • 最短路径问题 平面上有n个点(n<100)&#xff0c;每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。 若有连线&#xff0c;则表示可从一个点到达另一个点&#xff0c;即两点间有通路&#xff0c;通路的距离为两点间的直线距离。现在的任务…...

【国产MCU】-CH32V307-I2C控制器

I2C控制器 文章目录 I2C控制器1、I2C模块介绍2、I2C驱动API介绍3、I2C使用实例3.1 主模式3.1.1 主设备发送模式和主设备接收模式3.1.2 DMA方式发送3.2 从模式内部集成电路总线(I2C)广泛用在微控制器和传感器及其他片外模块的通讯上,它本身支持多主多从模式,仅仅使用两根线(…...

k8s pod理论

一、Pod概述 1、Pod的定义 Pod是K8S中创建和管理的最小单位。 2、一个Pod至少包含多少容器 1个pause容器&#xff08;基础容器/父容器/根容器&#xff09;和 1个或者多个应用容器&#xff08;业务容器&#xff09; 通常一个Pod最好只包含一个应用容器&#xff0c;一个应用容…...

智慧应急:构建全方位、立体化的安全保障网络

一、引言 在信息化、智能化快速发展的今天&#xff0c;传统的应急管理模式已难以满足现代社会对安全保障的需求。智慧应急作为一种全新的安全管理模式&#xff0c;旨在通过集成物联网、大数据、云计算、人工智能等先进技术&#xff0c;实现对应急事件的快速响应、精准决策和高…...

国际黄金价格是什么?和黄金价格有何区别?

黄金是世界上最珍贵的贵金属之一&#xff0c;其价值被无数人所垂涎。而国际黄金价格作为市场上的参考指标&#xff0c;直接影响着黄金交易的买卖。那么国际黄金价格到底是什么&#xff0c;与黄金价格又有何区别呢&#xff1f;本文将为您详细解答。 国际黄金价格是指以美元计量的…...

React入门简介

React简介 react是Facebook用来创建用户界面的js库。React不是一个MVC框架&#xff0c;而是一个用于构建组件ui库&#xff0c;是一个前端界面开发工具&#xff0c;所以很多人认为React是MVC中的V&#xff08;视图&#xff09;。React的存在能够很好的解决‘构建随着时间数据不断…...

强化学习_06_pytorch-PPO实践(Hopper-v4)

一、PPO优化 PPO的简介和实践可以看笔者之前的文章 强化学习_06_pytorch-PPO实践(Pendulum-v1) 针对之前的PPO做了主要以下优化&#xff1a; batch_normalize: 在mini_batch 函数中进行adv的normalize, 加速模型对adv的学习policyNet采用beta分布(0~1): 同时增加MaxMinScale …...

Scala Intellij编译错误:idea报错xxxx“is already defined as”

今天写scala代码时,Idea报了这样的错误&#xff0c;如下图所示&#xff1a; 一般情况下原因分两种&#xff1a; 第一是我们定义的类或对象重复多次出现&#xff0c;编译器无法确定使用哪个定义。 这通常是由于以下几个原因导致的&#xff1a; 重复定义&#xff1a;在同一个文件…...

面试笔记系列五之MySql+Mybaits基础知识点整理及常见面试题

myibatis执行过程 1读取MyBatis的配置文件。 mybatis-config.xml为MyBatis的全局配置文件&#xff0c;用于配置数据库连接信息。 2加载映射文件。映射文件即SQL映射文件&#xff0c;该文件中配置了操作数据库的SQL语句&#xff0c;需要在MyBatis配置文件mybatis-config.xml中…...

掌握Pillow:Python图像处理的艺术

掌握Pillow&#xff1a;Python图像处理的艺术 引言Python与图像处理的概述Pillow库基础导入Pillow库基本概念图像的打开、保存和显示 图像操作基础图像的剪裁图像的旋转和缩放色彩转换和滤镜应用文字和图形的绘制 高级图像处理图像的合成与蒙版操作像素级操作与图像增强复杂图形…...

React最常用的几个hook

React最常用的几个Hook包括&#xff1a;useState、useEffect、useRef以及useContext。 useState&#xff1a; 用于在函数组件中添加状态管理。它返回一个数组&#xff0c;第一个元素是当前状态的值&#xff0c;第二个元素是更新状态的函数。在使用时&#xff0c;可以通过解构赋…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...