八 Dockerfile文件解析-2

Dockerfile 文件保留字指令

8 COPY 指令两种写法

COPY src dest         Shell脚本写法COPY ["src","dest"]    Json写法

Dockerfile 示例:

Tomcat-Dockerfile示例文件:

FROM openjdk:11-jdk-busterENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
RUN mkdir -p "$CATALINA_HOME"
WORKDIR $CATALINA_HOMEENV TOMCAT_MAJOR 8
ENV TOMCAT_VERSION 8.5.57
ENV TOMCAT_SHA512 720de36bb3e40a4c67bdf0137b12ae0fd733aef772d81a4b8dab00f29924ddd17ecb2a7217b9551fc0ca51bd81d1da13ad63b6694c445e5c0e42dfa7f279ede1EXPOSE 8080
CMD ["catalina.sh", "run"]

Centos-Dockerfile示例文件:

FROM scratch
ADD centos-7.7-x86_64-docker.tar.xz /LABEL org.label-schema.schema-version="1.0" org.label-schema.name="CentOS Base Image" org.label-schema.vendor="CentOS" org.label-schema.license="GPLv2" org.label-schema.build-date="20191024"CMD ["/bin/bash"]

Dockerfile 自定义 示例:

示例一:
自定义centos,改变默认登陆路径,具有vim ifconfig 功能,并暴露80端口

FROM  centos
MAINTAINER  staticzz<c.dev1@qq.com>
ENV  PATH /usr
WORKDIR  $PATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80CMD echo $PATH
CMD echo "success--"
CMD /bin/bash

示例二:
CMD与ENTRYPOINT示例

CMD指令后不能有多个命令,如果有多个命令,则被最后一个命令覆盖

需求:现在我们要查询本机的Ip,并返回http头信息,

curl -s http://ip.cn -i

如果利用CMD指令构建的镜像,当容器运行时,加-i 命令会报错,原因是CMD命令不能多个一起使用

docker run -it 镜像id  -i
FROM centos
RUN yum -y install curl
CMD ["curl","-s","http://ip.cn"]

利用ENTRYPOINT指令构建的镜像,当容器运行时,加-i 命令正常运行,ENTRYPOINT指令可多个参数一起运行

docker run -it 镜像id -i
FROM centos
RUN yum -y insatll curl
ENTRYPOINT ["curl","-s","http://ip.cn"]

示例三:
ONBUILD指令

我们新建两个Dockerfile文件,一个为父文件名为Dockerfile,一个为子文件Dockerfile01

Dockerfile文件内容如下:

FROM centosYUN  yum -y install  curlCMD  ["curl","-s","http://ip.cn"]ONBUILD RUN echo"father is onbuild"

我们现在利用Dockerfile构建我们需要的镜像

docker build  -t statiacc/centos:1.1 .

构建完成后我们接下来编辑我们的Dockerfile01子文件,内容如下:

FROM  构建好的镜像RUN  yum -y install curlENTRYPOINT ["cmd","-s","http://ip.cn"]

接下来当我们利用我们的子文件Dockerfile01文件构建镜像时,因为我们继承的是我们的父文件构建的镜像,所以当我们利用子文件构建镜像时,会触发ONBUILD 指令

示例四:
构建Tomcat,综合使用保留字命令并区分COPY 与ADD 的区别

步骤:

  1. mkdir -p /usr/local/tomcat
  2. 在上述目录下touch c.txt
  3. 将jdk和tomcat安装的压缩包拷贝进上一步目录
  4. 在/usr/local/tomcat目录下新建Dockerfile文件
  5. 构建
  6. 运行
  7. 验证
  8. 综合前述步骤部署web服务

Dockerfile文件内容如下:

FROM centos MAINTAINER   cc<ss@qq.com#把宿主机当前的上下文中的c.txt拷贝到容器的/usr/local/tomcat目录下
COPY  c.txt /usr/local/tomcat#把java与tomcat拷贝到容器的/usr/local/tomcat下
ADD  jdk文件 /usr/local/
ADD  tomcat文件   /usr/local#安装vim编辑器
RUN yum -y install vim 设置java与tomcat环境变量
ENV JAVA_HOME  /usr/local/java
ENV CLASSPATH  $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/tomcat
ENV CTATLINA_BASE /usr/local/tomcatENV PATH $PATH:$JAVA_HOME:$CATALINA_HOME/lib:$CTATLINA_HOME/bin#设置工作路径,即容器登录后的落脚点
ENV  path  /usr/local
WORKDIR   $path#设置容器运行时监听的端口
EXPOSE  80#启动时运行tomcat
#ENTRYPOINT ["/usr/local/tomcat/startup.sh"]
#CMD ["/usr/local/tomcat/startup.sh"]
CMD /usr/local/tomcat/bin/startup.sh && tail -F /usr/local/tomcat/bin/logs/catalina.out

Dockerfile小总结图示

dockerfile文件名_第八章 Dockerfile文件解析(二)相关推荐

  1. 合并文件夹内所有Excel文件(目前仅限于合并单层文件夹,如果文件夹下面有文件夹,暂未加入此功能,默认合并所有文件的所有Sheet)优化文件名_变更为:文件夹名字 + 合并的文件-(xls+xlsx)

    几经修改,终于算是成为自己较为满意的一个VBA程序(2020-6-6修正) 然,因个人才疏学浅,如有疏漏,希望各位前辈多多指正~在下先行谢过~ 1.考虑到Excel新建Sheet的命名规则 2.考虑到 ...

  2. 文件解析_招标准备与文件解析

    ↑ 点击上方"智天策"关注我们 自7月18日起,每周六晚19:00-21:30,天策未来倾情打造的<军工领域投标培训课>如约开讲.前期已学习了第一讲<招投标基础和 ...

  3. CAD中的dxf文件解析(二):dxflib的使用

    1.前言 上一篇中对dxf文件及文件中常见的需要解析的直线,圆,圆弧,椭圆,多段线的说明,对dxf文件有了初步的了解,并做好了下载dxflib,dxf帮助文档的准备(没有准备的可以回到上一篇). CA ...

  4. python提取选中文件的文件名_如何从python文件路径中提取文件名?

    项目概述: 用户通过浏览器选择一个文件来导入数据.然后,我解包二进制文件.然后,我将新解包的数据保存为.csv文件,以便以后在excel中查看数据.用户当前通过键入新文件名来创建文件名.然后我继续用m ...

  5. java json 二维数组_安卓中使用Gjson解析二维数组

    String str = "{\"hot\":[{\"id\":\"1\",\"name\":\"张 ...

  6. CAD中的dxf文件解析(三):多段线篇

    1.前言 在前面的CAD中的dxf文件解析(二)中讲到了一些CAD的dxf文件解析点.线.圆弧.圆.块等的思路.下面提供链接: (二): CAD中的dxf文件解析(二):dxflib的使用_不爱学习 ...

  7. jmeter----jtl文件解析

    目录 一.jmeter----jtl文件解析 二.jtl文件转化成HTML报告 1. 命令行模式将jtl转成测试图表 2. 插件模式将jtl转成测试图表 一.jmeter----jtl文件解析 命令行 ...

  8. dockerfile如何运行镜像内的脚本_第七章 Dockerfile文件解析(一)

    七 Dockerfile文件解析-1 7.1 定义:Dockerfile是用来构建Docker镜像的文件,是由一系列命令和参数构成的脚本 7.2 Dockerfile内容基础知识: 1.每条保留字指令 ...

  9. Docker Review - dockerfile 实战_使用dockerfile制作tomcat镜像

    文章目录 Pre Docker 官方镜像 Dockerfile dockerfile制作tomcat镜像 准备软件 编写Dockerfile文件 dockerfile构建镜像 启动镜像 测试访问tom ...

  10. anconda设置镜像源_三、DockerFile 定制属于自己的专属镜像

    前言 上篇文章我们知道了怎么操作镜像和容器,到基础都是从已经存在的镜像开始的,那我们自己怎样搭建一个镜像并使用它呢?接下来就让我们学习使用dockerfile 创建属于自己的镜像吧. dockerfi ...

最新文章

  1. 作业盒子完成1.5亿美元D轮融资,用AI普及教育资源
  2. dio网络框架封装_Flutter 使用dio来发起网络请求以及Cookie管理
  3. Mybatis学习之配置优化
  4. Hadoop入门实例——WordCount统计单词
  5. swift 项目_如何对iOS项目进行静态分析
  6. linux 哪个进程在使用串口_Linux内核的整体架构
  7. 通过Ajax方式上传文件(input file),使用FormData进行Ajax请求
  8. 前端学习(2700):重读vue电商网站21之如何导入全局样式表
  9. 两种最短路径(测地距离)的算法——Dijkstra和Floyd
  10. 如何在python导入包_python如何引入包
  11. Python 爬取分析全国 12 个城市 4 万条房价信息,告诉你该怎样买房?
  12. win10打开.heic文件
  13. linux qt qrc文件中 xxx.png图片无法加载的问题
  14. IDEA开发及运行第一个Android项目
  15. 阿里云缺少中间证书:小程序在开发者工具和ios请求正常,在安卓手机上无效
  16. 教你如何玩转豆瓣(douban) 豆瓣使用入门!
  17. 数据中心解决方案安全技术
  18. unity obi插件
  19. 转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧
  20. 如何设置 Mac 键盘的打字音效?

热门文章

  1. linux 使用ssr客户端_React从CSR到SSR:第一篇
  2. suse 查看java版本_如何查看当前Linux的版本
  3. mybatis 依赖于jdbc_mybatis 详解(一)------JDBC
  4. 【2015沈阳区域赛F=HDU5514】Frogs(圆上n个青蛙跳统计跳劲哪些点---欧拉函数求和+思维)
  5. 求两个字符串的最长的连续公共子串
  6. mysql有闪回吗_【赵强老师】MySQL的闪回
  7. text无法使用空格 unity_简单的介绍几种在unity中对数据的存储和读档的方法!
  8. DL_C1_week4_2(build a deep neural network 2)
  9. Softmax 回归的从零开始实现 pytorch
  10. 使用 ssh-keygen访问服务器