linux怎么查看本机内存大小
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~