CMD 和 ENTRYPOINT 区别
CMD #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动的时候要运行的命令,可以追加命令
FROM #基础镜像,一切从这里开始构建
MAINTAINER #镜像是谁写的,姓名+邮箱
RUN #镜像构建的时候需要运行的命令
ADD #步骤,tomcat镜像,这个tomcat的压缩包!添加内容
WORKDIR #镜像的工作目录
VOLUME #挂载的目录
EXPOSE #暴露端口配置
CMD #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD #当构建一个被继承 Dockerfile 这个时候就会运行ONBUILD 的指令
COPY #类似ADD,将我们文件拷贝到镜像中
ENV #构建的时候设置环境遍量
[root@root tomcat]# cat Dockerfile
FROM centos
MAINTAINER root<1754808@qq.com>COPY readme.txt /usr/local/readme.txtADD jdk-8u11-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.22.tar.gz /usr/local/RUN yum -y install vim
RUN chmod 777 /usr/local/apache-tomcat-9.0.22/bin/startup.sh
RUN chmod 777 /usr/local/apache-tomcat-9.0.22/bin/catalina.shENV MYPATH /usr/local
WORKDIR $MYPATHENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/binEXPOSE 8080CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.22/bin/logs/catalina.out
构建镜像
[root@root tomcat]# docker build -t lh_tomcat .
Sending build context to Docker daemon 169.9MB
Step 1/17 : FROM centos---> 300e315adb2f
Step 2/17 : MAINTAINER root<1754808103@qq.com>---> Using cache---> f23b466173fb
Step 3/17 : COPY readme.txt /usr/local/readme.txt---> Using cache---> 5dfad04cae31
Step 4/17 : ADD jdk-8u11-linux-x64.tar.gz /usr/local/---> Using cache---> e15afd0717d9
Step 5/17 : ADD apache-tomcat-9.0.22.tar.gz /usr/local/---> Using cache---> 8b3b0b260f0c
Step 6/17 : RUN yum -y install vim---> Using cache---> 731ad02de5b7
Step 7/17 : RUN chmod 777 /usr/local/apache-tomcat-9.0.22/bin/startup.sh---> Using cache---> e60e5bb8d68d
Step 8/17 : RUN chmod 777 /usr/local/apache-tomcat-9.0.22/bin/catalina.sh---> Using cache---> 1bdadcf5f05c
Step 9/17 : ENV MYPATH /usr/local---> Running in dc5f851a95aa
Removing intermediate container dc5f851a95aa---> 567826b1db9b
Step 10/17 : WORKDIR $MYPATH---> Running in a1b9fa1f25c8
Removing intermediate container a1b9fa1f25c8---> f2da44f2566d
Step 11/17 : ENV JAVA_HOME /usr/local/jdk1.8.0_11---> Running in 1525576adae9
Removing intermediate container 1525576adae9---> 422a260a9854
Step 12/17 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar---> Running in ff3679d3d0d7
Removing intermediate container ff3679d3d0d7---> 1f2fb5b405ce
Step 13/17 : ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22---> Running in c627139c2a0e
Removing intermediate container c627139c2a0e---> 941804071257
Step 14/17 : ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.22---> Running in 201a8d7d454b
Removing intermediate container 201a8d7d454b---> 6a3edac3ea02
Step 15/17 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin---> Running in 5403ebe0c029
Removing intermediate container 5403ebe0c029---> 3de5361ec881
Step 16/17 : EXPOSE 8080---> Running in a1e4f56c1cb5
Removing intermediate container a1e4f56c1cb5---> 98fd728337df
Step 17/17 : CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.22/bin/logs/catalina.out---> Running in 3b183e06aecd
Removing intermediate container 3b183e06aecd---> 9fcc0d5c6a4e
Successfully built 9fcc0d5c6a4e
Successfully tagged lh_tomcat:latest
ADD
ADD指令具有以下三种功能:
1、将本地文件复制到容器映像中
举例来说,如果要将主机系统上的本地文件从Docker镜像复制/home/user/application
到/opt/app
,则可以在Dockerfile中包含以下指令:
ADD /home/user/application /opt/app
在此,仅将目录的内容/home/user/application
复制到/opt/app
包括其元数据在内的目录中。它不会复制application
目录本身
2、提取本地存储的tar文件
您还可以使用ADD指令提取格式为identity,gzip,bzip2或xz的压缩档案。这些内容在您所构建的Docker映像的目标位置中被解压缩为目录
ADD /home/user/test.tar.gz /opt
该行为类似于当您使用tar命令将tarball解压到主机系统上的特定目录时发生的情况
3、从URL下载文件
它类似于wget -P
Dockerfiles的工作方式。在构建Docker映像时,您可以按照以下说明下载文件并将其存储在容器映像上的所需位置
ADD https://filesamples.com/samples/document/pdf/sample2.pdf /home/user
生成图像后,可以在启动基于它的容器之前使用此PDF文档。这是许多独特的用例之一
COPY
COPY指令是ADD指令的改进,旨在减轻Docker用户之间的混淆。它的功能只是一个-将文件或目录从主机上的源位置复制到Docker映像上的目标位置
因此,基本上是上面讨论的ADD指令部分中的第一点。相应的指令为
COPY /home/user/application /opt/app
二、单独讲述add和copy
2.1 ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
格式:
ADD <src>... <dest>
ADD ["<src>",... "<dest>"] 用于支持包含空格的路径示例:
ADD hom* /mydir/ # 添加所有以"hom"开头的文件
ADD hom?.txt /mydir/ # ? 替代一个单字符,例如:"home.txt"
ADD test relativeDir/ # 添加 "test" 到 `WORKDIR`/relativeDir/
ADD test /absoluteDir/ # 添加 "test" 到 /absoluteDir/