数据卷(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:(multiply and rotate) and (multiply and rotate) Hash,乘法和旋转的hash 算法。 一、哈希函数 散列函数(英语:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“…...

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

小程序性能优化
背景 在开发小程序的过程中我们发现,小程序的经常会遇到性能问题,尤其是在微信开发者工具的时候更是格外的卡,经过排查发现,卡顿的页面有这么多的js代码需要加载,而且都是在进入这个页面的时候加载,这就会…...
C++拿几道题练练手吧
第 1 题 【 问答题 】 • 最短路径问题 平面上有n个点(n<100),每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。 若有连线,则表示可从一个点到达另一个点,即两点间有通路,通路的距离为两点间的直线距离。现在的任务…...
【国产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容器(基础容器/父容器/根容器)和 1个或者多个应用容器(业务容器) 通常一个Pod最好只包含一个应用容器,一个应用容…...

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

国际黄金价格是什么?和黄金价格有何区别?
黄金是世界上最珍贵的贵金属之一,其价值被无数人所垂涎。而国际黄金价格作为市场上的参考指标,直接影响着黄金交易的买卖。那么国际黄金价格到底是什么,与黄金价格又有何区别呢?本文将为您详细解答。 国际黄金价格是指以美元计量的…...
React入门简介
React简介 react是Facebook用来创建用户界面的js库。React不是一个MVC框架,而是一个用于构建组件ui库,是一个前端界面开发工具,所以很多人认为React是MVC中的V(视图)。React的存在能够很好的解决‘构建随着时间数据不断…...

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

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

面试笔记系列五之MySql+Mybaits基础知识点整理及常见面试题
myibatis执行过程 1读取MyBatis的配置文件。 mybatis-config.xml为MyBatis的全局配置文件,用于配置数据库连接信息。 2加载映射文件。映射文件即SQL映射文件,该文件中配置了操作数据库的SQL语句,需要在MyBatis配置文件mybatis-config.xml中…...

掌握Pillow:Python图像处理的艺术
掌握Pillow:Python图像处理的艺术 引言Python与图像处理的概述Pillow库基础导入Pillow库基本概念图像的打开、保存和显示 图像操作基础图像的剪裁图像的旋转和缩放色彩转换和滤镜应用文字和图形的绘制 高级图像处理图像的合成与蒙版操作像素级操作与图像增强复杂图形…...
React最常用的几个hook
React最常用的几个Hook包括:useState、useEffect、useRef以及useContext。 useState: 用于在函数组件中添加状态管理。它返回一个数组,第一个元素是当前状态的值,第二个元素是更新状态的函数。在使用时,可以通过解构赋…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...