5.Dockerfile概述以及指令

网友投稿 251 2022-10-22

5.Dockerfile概述以及指令

Dockerfile是什么?

Dockerfile使用来构建Docker镜像的文本格式的构建文件,是由一系列命令和参数构成的脚本。用户可以使用Dockerfile来快速创建自定义的镜像。

从应用软件的的角度看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段:

1. Dockerfile是软件的原材料

2. Docker镜像是软件的交付品

3. Docker容器则可以认为是软件的运行态

Dockerfile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署和运维,三者缺一不可,合力充当Docker体系的基石。

Docker执行Dockerfile的大致流程

1. Docker从基础镜像运行一个容器

2. 执行一条指令并对容器作出修改

3. 执行类似docker commit 的操作提交一个新的镜像层

4. Docker再基于刚提交的镜像运行一个新的容器

5. 执行Dockerfile中的下一条指令直到所有的指令运行完成

Dockerfile指令

1. 配置指令

ARG:定义创建镜像过程中使用的变量

FROM:指定所创建镜像的基础镜像

LABEL:LBAEL指令可以为生成的镜像添加元数据标签信息。这些信息可以用来辅助过滤出特定镜像

ENV:指定环境变量,在镜像生成过程中会被后续RUN指令使用,在镜像启动的容器中也会存在

ENTRYPOINT:指定镜像的默认入口命令,该入口命令会在启动容器时作为根命令执行,所有传入值作为该命令的参数

VOLUMN:创建一个数据卷挂载点

USER:指定运行容器时的用户或UID,后续的RUN等指令也会使用指定的用户身份

WORKDIR:为后续的RUN、CMD、ENTRYPOINT指令配置工作目录

ONBUILD:指定基于所生成镜像创建子镜像时,自动执行的操作命令

MAINTAINER:镜像维护者的姓名和邮箱地址

2. 操作指令

RUN:运行指定命令

CMD:CMD指令用来指定启动容器时默认执行的命令,Dockerfile中可以有多个CMD命令,但是只有最后一个生效

ADD:添加内容到镜像(拷贝+解压缩)

COPY:添加内容到镜像

简单案例

1. 自定义mycentos目的使我们自己的镜像如下:

登录后的默认路径/tmp可以使用vim编辑器查看网络配置,可以使用ifconfig命令

FROM centosMAINTAINER wilson9933@qq.com# 设置环境变量ENV base_url /tmp# 设置工作目录WORKDIR $base_url# 执行命令,安装vim和网络工作RUN yum -y install vim*RUN yum -y install net-toolsCMD echo "success !!!"CMD /bin/bash

执行 docker build -f /my-docker/Dockerfile -t mycentos:1.0 . 进行安装

运行成功!!

2. CMD个ENTRYPOINT的区别

FROM centosRUN yum -y install curlCMD echo "success !!!"CMD ["curl", "-s", "build -f /my-docker/Dockerfile -t my-ip:1.0 .

这个时候修改Dockerfile,把CMD换成ENTRYPOINT

FROM centosRUN yum -y install curlCMD echo "success !!!"ENTRYPOINT ["curl", "-s", "build -f /my-docker/Dockerfile -t my-ip:1.1 .

这里因为 相应太久了,换成了百度的域名测试!

3. ONBUILD命令

Dockerfile文件:

FROM centosRUN yum -y install curlCMD echo "success !!!"ENTRYPOINT ["curl", "-s", "RUN echo "father onbuild !! 88888 !!!"

构建:docker build -f /my-docker/Dockerfile -t baidu-father:1.0 .

修改Dockerfile

FROM baidu-father:1.0RUN yum -y install curlCMD echo "success !!!"ENTRYPOINT ["curl", "-s", "build -f /my-docker/Dockerfile -t baidu-son:1.0 .

可以发现有生成一个触发器!!!

4. ADD和COPY命令,自定义tomcat9

1. 在宿主机上创建目录 mkdir -p /opt/my/tomcat9,并执行 touch x.txt 创建一个文本文件 c.txt

2. 准备好jdk8和tomcat9的压缩包

3. 编写Dockerfile文件,然后执行 docker build -f /opt/my/tomcat9/Dockerfile -t mytomcat9:1.0 .

FROM centosCOPY c.txt /usr/local/cincontainer.txtADD jdk1.8.0_121.tar.gz /usr/local/ADD apache-tomcat-9.0.26.tar.gz /usr/localRUN yum -y install vim*RUN yum -y install net-toolsENV MY_PATH /usr/localWORKDIR $MY_PATHENV JAVA_HOME /usr/local/jdk1.8.0_121ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENV CATALINA_HOME /usr/local/apache-tomcat-9.0.26ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.26ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/binEXPOSE 8080# 我的jdk比较奇葩,需要授权,正常这步可以省略RUN chmod -R 777 $JAVA_HOME/bin/CMD $CATALINA_HOME/bin/startup.sh && tail -F $CATALINA_HOME/logs/catalina.out

4. docker run -d -p 9090:8080 --name myt9 -v /opt/my/tomcat9/webapps:/usr/local/apache-tomcat-9.0.26/webapps -v /opt/my/tomcat9/tomcat9logs:/usr/local/apache-tomcat-9.0.26/logs --privileged=true mytomcat9

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:免费手机号码测吉凶(免费手机号码测吉凶周易)
下一篇:使用Mybatis如何实现删除多个数据
相关文章

 发表评论

暂时没有评论,来抢沙发吧~