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

【docker】Dockerfile练习

1、overlay文件系统原理测试

cd /mnt
mkdir A B C worker merged
echo "From A">./A/a.txt
echo "From A">./A/b.txt
echo "From A">./A/c.txt
echo "From B">./B/a.txt
echo "From B">./B/d.txt
echo "From C">./C/b.txt
echo "From C">./C/e.txt
tree .  

在这里插入图片描述

mount -t overlay overlay -o lowerdir=A:B,upperdir=C,workdir=worker /mnt/merged

在这里插入图片描述
可以看到我们原本 A B C 三个目录下的文件已经被合并,相同文件名的文件将会选择性的显示,在merged 中会显示离 merged 层更近的文件,upper 层比 lower 层更近,同样的 lower层中,排序靠前比排序靠后更近,在这个例子中就是 A 比 B 更靠近 merged 层根据这个规律,我们可以先分析下 merged 层中的文件来源, a.txt 在 A 和 B 中都有,但 A 比 B 更优先,所以 merged 中的 a.txt 应该来自 A 目录, b.txt 在 A 和 C 中都有,但 C 是 upper 层,所以b.txt 应该来自 C 目录,我们可以核实一下。
在这里插入图片描述
在这里插入图片描述

修改 merged 层的 a.txt 文件,可以看到 merged 层的 a.txt 内容虽然改变,但 A 目录(只读层)下的 a.txt 内容并没有发生变化,而在 C 目录(读写层)下多了一个 a.txt 文件,内容就是我们修改过的 a.txt 的内容,这就是只读层与读写层的关系,在 merged 目录对文件进行修改并不会影响到只读层的源文件,只会在读写层进行编辑
在这里插入图片描述
删除c.txt

rm c.txt

可以看到在 merged 目录中已经没有 c.txt 文件,但在 C 目录下却多了一个 c.txt ,这个文件就是我们在一开始提到的 whiteout文件,它是一种主/次设备号都为0的字符设备,overlay 文件结构通过使用这种特殊文件来实现文件删除功能,在 merged 目录下使用 ls 命令来查看文件时,overlay 会自动过滤掉 upper 目录下的 whiteout 文件以及在 lower 目录下的同名文件,以此来实现文件删除效果
在这里插入图片描述

2、使用dockerfile构建有可用yum源的镜像

FROM centos
RUN sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g" /etc/yum.repos.d/CentOS-*
RUN yum clean all && yum makecache
docker build -t test2:1.0 .      

3、使用dockerfile基于题2镜像构建jdk镜像

FROM test2:1.0RUN yum install -y wget rpmRUN wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm -O /opt/jdk-8u131-linux-x64.rpmRUN rpm -ivh /opt/jdk-8u131-linux-x64.rpm 

4、使用dockerfile基于题3镜像构建tomcat镜像

 wget https://mirrors.huaweicloud.com/apache/tomcat/tomcat-8/v8.5.99/bin/apache-tomcat-8.5.99.tar.gzvim Dockerfile
FROM centosRUN sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g" /etc/yum.repos.d/CentOS-*RUN yum clean all && yum makecache && yum install -y wget rpm
RUN wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm -O /opt/jdk-8u131-linux-x64.rpmRUN rpm -ivh /opt/jdk-8u131-linux-x64.rpm
ADD apache-tomcat-8.5.99.tar.gz /opt/javaweb/ 
RUN mkdir -p /usr/local/tomcat/
RUN mv /opt/javaweb/apache-tomcat-8.5.99 /usr/local/tomcat/RUN chmod +x /usr/local/tomcat/apache-tomcat-8.5.99/bin/catalina.sh
ENV CATALINA_HOME /usr/local/tomcat/apache-tomcat-8.5.99/
#  设置启动命令
ENTRYPOINT   [ "/usr/local/tomcat/apache-tomcat-8.5.99/bin/catalina.sh", "run"] # 暴露 HTTP 端口
EXPOSE 8080
docker build -t test2:4.0 .       
docker run -itd -p 8888:8080 test2:4.0       

在这里插入图片描述

http://www.lryc.cn/news/421353.html

相关文章:

  • 数据可视化的魔法:Python Matplotlib库的奇妙之旅
  • Python数据科学的秘密武器:Pandas库的深度解析
  • 云计算实训24——python基本环境搭建、变量和数据类型、数据集合、py脚本
  • 深入了解网络性能监控(NPM):优化网络性能的关键
  • Vue引入使用iconfont字体图标
  • Doc2Vec
  • MES生产过程透明管理,实施掌握生产每个环节
  • Java解析压缩包,并根据指定文件夹上传文件
  • 【HTML】纯前台字符验证码
  • 如何在 Vue.js 项目中动态设置页面标题
  • Eval绕过限制参数限制
  • 计算机网络408考研 2021
  • element table表格树形数据展示
  • Ubuntu 安装 Snipaste
  • NET8环境WebAPI实现文件的压缩及下载
  • Ubuntu 18 使用NVIDIA上的HDMI输出声音
  • C#模拟量线性变换小程序
  • 跟《经济学人》学英文:2024年08月10日这期 How AI models are getting smarter
  • Spring Web MVC入门(上)
  • 【c++】公差判断函数 isInTolerance
  • 电脑新加的硬盘如何分区?新加硬盘分区选MBR还是GPT
  • 白骑士的Matlab教学基础篇 1.3 控制流
  • 设计模式 - 适配器模式
  • docker部署minIO
  • 「Pytorch」BF16 Mixed Precision Training
  • 论文阅读:Efficient Core Maintenance in Large Bipartite Graphs | SIGMOD 2024
  • LLMOps — 使用 BentoML 为 Llama-3 模型提供服务
  • 微软蓝屏事件揭秘:有问题的数据引发内存读取越界
  • NASA:北极ARCTAS差分吸收激光雷达(DIAL)遥感数据
  • Android 文件上传与下载