Docker容器的镜像文件Dockerfile的介绍

  • 这篇文章为大家带来有关Docker容器的镜像文件Dockerfile的详细介绍。大部分知识点都是大家经常用到的,为此分享给大家做个参考。一起跟随小编过来看看吧。

dockerfile 指令选项:
1、FROM
用法: FROM  
1)from指定构建镜像的基础源镜像,如果本地没有指定这个镜像,则会自动从docker公共仓库中pull下来
2)from必须是dockerfile中非注释行的第一个命令,也就是说写一个一个dockerfile必须从(除了注释以外)from语句开始
3)from可以在一个dockerfile中出现多次,如果有需求在一个dockerfile中创建多个镜像
4)如果from语句没有指定镜像的标签,则默认就使用latest的标签

创新互联公司是一家朝气蓬勃的网站建设公司。公司专注于为企业提供信息化建设解决方案。从事网站开发,网站制作,网站设计,网站模板,微信公众号开发,软件开发,微信小程序,十余年建站对成都广告推广等多个领域,拥有多年设计经验。

2、MAINTAINER
用法: MAINTAINER
指定创建镜像的用户

3、RUN
RUN:两种使用方式
1) RUN
2) RUN "executable","param1","param2"
每条RUN指令是创建镜像是执行的命令,并提交为新的镜像,后续的RUN都在之前RUN提交后的镜像为基础,镜像是分层的,可以通过一个奖项的任何一个历史提交点来创建,类似远吗的版本控制。
exec方式会被解析为一个JSON数组,所以必须使用双引导而不是单引导。exec方式不会调用一个命令shell所以也就不会集成相应的变量
如:RUN [ "echo","$HOME" ]  这种方式是不会达到输出HOME变量的
正确的方式应该是: RUN [ "sh","-c","echo","$HOME" ]
RUN产生的缓存在一次构建的时候是不会失效的,会被重用,可以使用--no-cache选项,即docker build --no-cache ,如此便不会缓存

4、CMD
CMD 有三种使用方式:
1)CMD "executable","param1","param2"
2)CMD "param1","param2"
3)CMD "commamd","param1","param2"
CMD就是容器启动时执行的命令,如果用户启动容器时指定了运行的命令,则会覆盖掉CMD指定的命令。
注:CMD指令在dockerfile中只能使用一次,如果有多个,则只有最后一个会生效
CMD的目的是为了在启动容器时提供一个默认的命令执行选项。如果用户启动容器时指定了运行的命令,则会覆盖掉CMD指定的命令
CMD会在启动容器的时候执行,build时不执行,而RUN只是在构建的时候执行,后续镜像构建完成后启动容器就与RUN无关了

5、EXPOSE
用法:EXPOSE [...]
告诉docker服务端容器对外映射的本地端口,需要在docker run 的时候使用-p或者-P选项生效

6、ENV
ENV                 #这样设置只能设置一个变量
ENV  = .....        #这样允许写多个变量
例子:
ENV  myname="john" myDOg=rex\ the\ dog\
mycat=fluffy
相当于
ENV myName John
ENV myDog Rex The Dog
ENV myCat fluffy

7、ADD
用法:ADD  <源地址>  <目标地址>
ADD复制本地主机文件、目录或者远程文件URLS  添加到容器指定的路径中去。
支持通过Go的正则模糊匹配
例:
ADD  hom*      /mydir         #以hom开头的所有文件拷贝到容器中的/mydir
ADD  hom?.txt  /mydir         #以hom开头.txt结尾的所有文件拷贝到容器中的/mydir

8、COPY
用法:COPY  <源地址>  <目标地址>
copy复制新文件到容器中去,并且添加到容器指定的路径中,用法和ADD相同,唯一不同的是不能指定远程配置文件URLS

9、ENTRYPOINT
用法:
ENTRYPOINT  "executable","param1","param2"
ENTRYPOINT   command  param1  param2(shell form)
配置容器启动后执行的命令,并且不可被docker  run提供的参数覆盖,而CMD是可以被覆盖的。如果覆盖则可以使用docker  run  --entrypoint选项
每个dockerfile中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个生效

Exec  form  ENTRYPOINT  例子:
通过 ENTRYPOINT使用exec form方式设置稳定的默认命令和选项,而使用CMD添加默认之外经常被改动的选项。
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]

通过 Dockerfile 使用ENTRYPOINT展示前台运行 Apache 服务
FROM debian:stable
RUN yum update && yum install httpd -y
EXPOSE 80 443
VOLUME ["/var/www/html", "/var/log/apache2", "/etc/apache2"]
ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

shell form ENTRYPOINT 例子:
这种方式会在/bin/sh -c 中执行,会忽略任何CMD或者docker run命令选项,为了确保docker stop能够停止长时间运行ENTRYPOINT的容器,确保执行的时间使用exec选项

10、VOLUME
用法:VOLUME  ["/data"]
创建一个可以从本地主机或其他容器的挂载点

11、USER
使用哪个用户跑container
例:
ENTRYPOINT ["memcached"]
USER daemon

12、WORKDIR
相当于CD命令

13、ONBUILD
ONBUILD 指令的命令在构建镜像时不执行,而是在他的子镜像中执行

看完上述内容,你们对Docker容器的镜像文件Dockerfile有进一步的了解吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读。


网站标题:Docker容器的镜像文件Dockerfile的介绍
文章网址:http://pwwzsj.com/article/jjcesj.html