技术分享

金山云 > 推荐阅读 > 【技术实践】Dockerfile入门

【技术实践】Dockerfile入门

发布时间: 2020-01-16 12:01:03


  一、什么是Dockerfile


  1、Dockerfile的用途


  Dockerfile是用来构建镜像的,Dockerfile构建过程:


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


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


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


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


  · 5.执行Dockerfile中的下一跳指令,直至所有指令执行完毕.


  2、运行构建


  注意文件名字必须叫Dockerfile:


  · # docker build -t="syx/df_test2" .


  · -t="syx/df_test2" ,指定产生镜像的 镜像名:标签名


  · 每条RUN指令产生一个新都会创建一个新的镜像层并对镜像进行提交,可以启动中间产生的镜像,运行下一条指令进行调试!!!


  · 下次运行时不会重新创建该缓存镜像,可以指定参数(--no-cache)强制创建!


  ·


  运行结束就能看到我们自己构建的镜像了


  · # docker images


  3、执行镜像


  · # docker run -d -p 8080:80 --name static_web liangshengqi/static_webnginx -g "daemon off"


  · # docker run -d -P --name static_web liangshengqi/static_web nginx -g"daemon off" 将容器80端口对宿主机开放,并且绑定到主机的一个随机端口


  4、查看镜像的 ONBUILD 指令


  docker inspect imgId


  二、Dockerfile的例子


  1、例一


  # vim Dockerfile


  · FROM ubuntu


  · MAINTAINER syx '783284481@qq.com'


  · RUN apt-get update && apt-get install -y nginx


  · EXPOSE 80


  2、例二


  # version: 0.0.1


  FROM ubuntu: 14.04


  MAINTAINER liangshengqi "liangshengqi@langchao.com"


  RUN apt-get update


  RUN apt-get install -y nginx


  RUN echo 'Hi, I am in your container' >/usr/share/nginx/html/


  EXPOSE 80


  三、Dockerfile的指令


  1、 CMD


  CMD ["/bin/bash","-l"]


  docker run 命令可以覆盖 CMD指令。


  2、 ENTRYPOINT


  ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]


  ENTRYPOINT指令指定的命令不会被docker run覆盖,docker run传递的参数会再次传递给ENTRYPOINT指定的命令。


  这个命令会以前台的方式启动nginx守护进程,此时这个容器作为一个web服务器来运行。


  组合 ENTRYPOINT 和 CMD


  ENTRYPOINT ["/usr/sbin/nginx"]


  CMD ["-h"]


  这个例子中,


  · 如果启动容器时,在命令行中指定参数传递给nginx守护进程,如指定 -g "daemonoff",nginx守护进程就以指定的参数方式运行(此处是以前台方式运行)


  · 如果启动容器时,在命令行中没有指定参数,就会使用默认的CMD指定的-h参数(显示nginx的帮助信息)


  其实,--entrypoint可以覆盖dockerfile中的ENTRYPOINT指令!


  3、WORKDIR 设置工作目录


  · WORKDIR /opt/webapp/db


  · RUN bundle install


  · WORKDIR /opt/webapp


  · ENTRYPOINT ["backup"]


  或者


  · docker run -it -w /var/log ubuntu pwd


  4、ENV 设置环境变量


  · ENV TARGET_DIR /opt/app


  · WORKDIR $TARGET_DIR


  或者临时有效的设置


  · docker run -it -e "WEB_PORT=8080" ubuntu env


  5、USER 指定该镜像会以什么样的用户去运行


  USER user


  USER user:group


  USER uid


  USER uid:gid


  6、ADD 和 COPY


  ADD 复制文件和目录,如果需要解压,就解压


  COPY 复制文件


  · COPY conf.d /etc/apache2


  · ADD latest.tar.gz /var/www/wordpress


  7、ONBUILD


  当一个镜像被其他镜像用作基础镜像时,会触发的动作


  ONBUILD ADD . /ap/src


  ONBUILD RUN cd /app/src && make


  8、VOLUME


  作者:梁圣奇


  职务:云服务集团云计算产品中心高级架构师


  专业领域:微服务架构


  专家简介:近二十年软件开发与架构设计经验,深入了解多种软件设计模式,在微服务架构治理、物联网服务平台设计研发等领域拥有丰富实战经验,同时专注技术分享,帮助开发者成长。


以上就是金山云为您带来的【技术实践】Dockerfile入门的相关内容,如果您还想了解更多镜像,指令,容器,过程,基础,金山云的相关问题您可以点击页面中的链接进行具体了解。金山云提供云服务器,云主机,云存储,私有云,数据库,物理主机,RDS,KS3,SLB,KEC的全套产品服务,部分产品可以免费体验,而且会有定期的优惠、代金券等相关的活动。成立7年来,金山云始终坚持以客户为中心的服务理念,提供安全、可靠、稳定、高品质的云计算服务。以上是对【技术实践】Dockerfile入门相关介绍,如果觉得对您有帮助可以收藏。欢迎随时查看。
以上就是金山云为您带来的推荐阅读的全部内容,如果还想了解更多内容可访问金山云官网www.ksyun.com了解其它资讯。
*免责声明:部分文章信息来源于网络以及网友投稿,本网站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如本站文章和转稿涉及版权等问题,请作者在及时联系本站,我们会尽快处理。