国家工程招标网公告,外贸网站优化软件,臭臭猫网站建设,wordpress 2m附件dockerfile 是啥?dockerfile 用来构建 docker 镜像的文件。 前言 Docker 入门到精通 1、DockerFile 介绍 dockerfile 是啥?dockerfile 用来构建 docker 镜像的文件。 具体步骤#xff1a;
1、编写一个 dockerfile 文件
2、docker build 构造一个镜像
3、docker run 运行…
dockerfile 是啥?dockerfile 用来构建 docker 镜像的文件。 前言 Docker 入门到精通 1、DockerFile 介绍 dockerfile 是啥?dockerfile 用来构建 docker 镜像的文件。 具体步骤
1、编写一个 dockerfile 文件
2、docker build 构造一个镜像
3、docker run 运行镜像
4、docker push 发布镜像 DockerFile 构建过程 1、每个保留关键字都必须是大写字母
2、从上往下顺序执行
3、# 表示注释
4、每一个指令都会新建一个新的镜像层并提交。 DockerFile 指令
FROM #基础镜像MAINTAINER #镜像是谁写的RUN #镜像构建时需要运行的命令ADD #添加基础镜像之外的其他内容WORKDIR #镜像工作目录VOLUME #设置容器卷挂载目录EXPOSE #暴露端口 -p一样CMD #指定容器启动时运行的命令,只有最后一个会生效可被替代ENTRYPOINT #指定容器启动时运行的命令可以追加命令ONBUILD #当构建一个呗继承dockerfile时触发 ONBUILDCOPY #类似ADD将文件拷贝到镜像中ENV #构建时设置环境变量 实战测试 docker 镜像有 99% 都是从 scratch 这个基础镜像构建的。 [rootlocalhost dockerfile]# vi dockerfile-centos FROM centosMAINTAINER luojie123qq.com
ENV MYPATH /usr/localWORKDIR $MYPATH
RUN yum -y install vimRUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATHCMD echo -----end-------CMD /bin/bash[rootlocalhost dockerfile]# docker build -f dockerfile-centos -t lj_df_centos .[rootlocalhost dockerfile]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZElj_df_centos latest 179579582bbb 14 minutes ago 291MB
#新生成的centos镜像工作目录在/usr/local 多了vim和ifconfig命令
docker history 镜像 id 查看镜像构建历史 CMD 和 ENTRYPOINT 区别
CMD #指定容器启动时运行的命令,只有最后一个会生效可被替代ENTRYPOINT #指定容器启动时运行的命令可以追加命令
[rootlocalhost dockerfile]# vi dockerfile-cmdFROM centosCMD [ls,-a][rootlocalhost dockerfile]# docker build -f dockerfile-cmd -t cmd-test .Sending build context to Docker daemon 3.072kBStep 1/2 : FROM centos --- 300e315adb2fStep 2/2 : CMD [ls,-a]...[rootlocalhost dockerfile]# docker run ea34d5842115....dockerenvbindevetchome[rootlocalhost dockerfile]# docker run ea34d5842115 -ldocker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused exec: \-l\: executable file not found in $PATH: unknown.ERRO[0000] error waiting for container: context canceled #输入-l命令提示无法识别原因是-l不是一个独立命令会替换[ls,-a]所以报错。[rootlocalhost dockerfile]# docker run ea34d5842115 pwd/#输入pwd可以正常运行。CMD是覆盖命令。
[rootlocalhost dockerfile]# vi dockerfile-entrypointFROM centosENTRYPOINT [ls,-a][rootlocalhost dockerfile]# docker build -f dockerfile-entrypoint -t entrypoint-test .Sending build context to Docker daemon 4.096kBStep 1/2 : FROM centos --- 300e315adb2fStep 2/2 : ENTRYPOINT [ls,-a][rootlocalhost dockerfile]# docker run 4404aae5e7a5....dockerenvbindevetc[rootlocalhost dockerfile]# docker run 4404aae5e7a5 -ltotal 0drwxr-xr-x. 1 root root 6 Jan 18 16:16 .drwxr-xr-x. 1 root root 6 Jan 18 16:16 ..-rwxr-xr-x. 1 root root 0 Jan 18 16:16 .dockerenvlrwxrwxrwx. 1 root root 7 Nov 3 15:22 bin - usr/bin#输入-l可以识别相当于ls -alENTRYPOINT是追加命令。
实战DockerFile 制作 centosjdktomcat 镜像
FROM centosMAINTAINER luojie
COPY readme.txt /usr/local/readme.txt
ADD apache-tomcat-9.0.43.tar.gz /usr/localADD jdk-8u131-linux-x64.tar.gz /usr/local
RUN yum -y install vim
ENV MYPATH /usr/localWORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_131ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENV CATALINA_HOME /usr/local/apache-tomcat-9.0.43ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.43/bin/startup.sh tail -f /usr/local/apache-tomcat-9.0.43/logs/catalina.out
启动 centosjdktomcat
#生成镜像 docker build -t lj_tomcat .
#运行容器 docker run -d -p 8080:8080 -v /test/abc:/usr/local/apache-tomcat-9.0.43/webapps/abc 9463c7c88bea 在 abc 目录下新增 a.html浏览器访问http://ip:8080/abc/a.html即可看到效果。
小结