网络科技

    今日:733| 主题:244858
收藏本版
互联网、科技极客的综合动态。

[其他] Dockerfile指令汇总及解析

[复制链接]
卜要嗳丄莪 发表于 2016-10-8 03:12:21
113 5

立即注册CoLaBug.com会员,免费获得投稿人的专业资料,享用更多功能,玩转个人品牌!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
原文地址:    http://www.maoyupeng.com/dockerfile-command-introduction.html  
  什么是Dockerfile

  Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数。其产出为一个新的可以用于创建容器的镜像。
  当你在使用 Docker构建镜像的时候,每一个命令都会在前一个命令的基础上形成一个新层。这些基础镜像可以用于创建新的容器。本篇文章将手把手教您如何从基础镜像,一步一步,一层一层的从Dockerfile构建容器的过程。
  Dockerfile示例

  1. # Version 1.0
  2. FORM ubuntu:14.04
  3. MAINTAINER Mao "[email protected]"
  4. RUN apt-get update && apt-get install -y nginx
  5. RUN echo 'Hello,I am work' > /usr/share/nginx/html/index.html
  6. EXPOSE 80 80
复制代码
Docker执行步骤分析

  以上    Dockerfile示例中,每条指令都会创建一个新的镜像层并对镜像进行提交.Docker执行Dockerfile大致流程:  
  
       
  •       Docker从基础镜像运行一个容器;
       
  •       执行一条指令,对容器做出修改;
       
  •       执行类似        docker commit的操作,提交一个新的镜像层;      
       
  •       Docker再基于刚提交的镜像运行一个新容器;
       
  •       执行        Dockerfile中的下一条指令,直到所有指令都执行完毕;      
      
  示例解析

  
       
  •               FROM:每个dockerfile的第一条命令是FROM.FROM指令指定一个已经存在的镜像,则代表FROM后续的指令都是基于该镜像(ubuntu14.04)进行的.      
       
  •               MAINTAINER:该指令告诉Docker,作者和邮箱地址      
       
  •               RUN:通俗地说,        RUN指令会在shell里使用命令包装器        /bin/sh -c来执行.如果在不支持shell的平台上运行,则可使用exec格式的RUN指令        RUN ["apt-get","install","-y","nginx"]      
       
  •               EXPOSE: 向外公开端口      
      
  Dockerfile指令汇总及解析

  MAINTAINER

  我建议这个命令放在Dockerfile的起始部分,虽然理论上它可以放置于Dockerfile的任意位置。这个命令用于声明作者,并应该放在FROM的后面。
  1. # MAINTAINER [name] [email]
  2. MAINTAINER authors_name "[email protected]"
复制代码
FROM

  FROM命令可能是最重要的Dockerfile命令。改命令定义了使用哪个基础镜像启动构建流程。基础镜像可以为任意镜 像。如果基础镜像没有被发现,Docker将试图从Docker image index来查找该镜像。FROM命令必须是Dockerfile的首个命令。
  1. # FROM [image name]
  2. FROM ubuntu
复制代码
ADD

      ADD命令有两个参数,源和目标。它的基本作用是从源系统的文件系统上复制文件到目标容器的文件系统。如果源是一个URL,那该URL的内容将被下载并复制到容器中。  
  1. # ADD [source directory or URL] [destination directory]
  2. ADD /my_app_folder /my_app_folder
复制代码
RUN

      RUN命令是    Dockerfile执行命令的核心部分。它接受命令作为参数并用于创建镜像。不像    CMD命令,    RUN命令用于创建镜像(在之前commit的层之上形成新的层)。  
  1. # RUN [command]
  2. RUN apt-get update
复制代码
CMD

  和    RUN命令相似,    CMD可以用于执行特定的命令。和    RUN不同的是,这些命令不是在镜像构建的过程中执行的,而是在用镜像构建容器后被调用。  
  1. # CMD application "argument", "argument", ..
  2. CMD "echo" "Hello Mao!"
复制代码
ENTRYPOINT

      ENTRYPOINT帮助你配置一个容器使之可执行化,如果你结合    CMD命令和    ENTRYPOINT命令,你可以从    CMD命令中移除“application”而仅仅保留参数,参数将传递给    ENTRYPOINT命令。  
  1. # Usage: ENTRYPOINT application "argument", "argument", ..
  2. # Remember: arguments are optional. They can be provided by CMD
  3. # or during the creation of a container.
  4. ENTRYPOINT echo
  5. # Usage example with CMD:
  6. # Arguments set with CMD can be overridden during *run*
  7. CMD "Hello docker!"
  8. ENTRYPOINT echo
复制代码
ENV

      ENV命令用于设置环境变量。这些变量以”key=value”的形式存在,并可以在容器内被脚本或者程序调用。这个机制给在容器中运行应用带来了极大的便利。  
  1. # ENV key value
  2. ENV SERVER_WORKS 4
复制代码
USER

  USER命令用于设置运行容器的UID。
  1. # USER [UID]
  2. USER 751
复制代码
VOLUME

  VOLUME命令用于让你的容器访问宿主机上的目录。
  1. # VOLUME ["/dir_1", "/dir_2" ..]
  2. VOLUME ["/my_files"]
复制代码
WORKDIR

  WORKDIR命令用于设置CMD指明的命令的运行目录。
  1. # MAINTAINER [name] [email]
  2. MAINTAINER authors_name "[email protected]"0
复制代码
EXPOSE

          EXPOSE指令用来告诉Docker这个容器在运行时会监听哪些端口,Docker在连接不同的容器(使用–link参数)时使用这些信息;   
    两个Docker的核心概念是可重复和可移植。镜像应该可以运行在任何主机上并且运行尽可能多的次数。在 Dockerfile中你有能力映射私有和公有端口,但是你永远不要通过Dockerfile映射公有端口。通过映射公有端口到主机上,你将只能运行一个容器化应用程序实例。(译者注:运行多个端口不就冲突啦)
   
  1. # MAINTAINER [name] [email]
  2. MAINTAINER authors_name "[email protected]"1
复制代码
友荐云推荐




上一篇:The Psychology of Search Engine Optimization: 10 Things You Need to Know
下一篇:Lights, cameras, Dreamforce
酷辣虫提示酷辣虫禁止发表任何与中华人民共和国法律有抵触的内容!所有内容由用户发布,并不代表酷辣虫的观点,酷辣虫无法对用户发布内容真实性提供任何的保证,请自行验证并承担风险与后果。如您有版权、违规等问题,请通过"联系我们"或"违规举报"告知我们处理。

fenghanqiu 发表于 2016-10-8 03:53:02
屌丝和绿茶婊太多了,还是顶卜要嗳丄莪的帖子更有意义
回复 支持 反对

使用道具 举报

cchhchch 发表于 2016-10-8 04:25:58
一瓶酱油,打尽多少经验;一句挽尊,顶起多少秒沉。
回复 支持 反对

使用道具 举报

泪洒曦晨绝韶华 发表于 2016-10-10 01:51:57
睡眠是一门艺术――谁也无法阻挡我追求艺术的脚步!  
回复 支持 反对

使用道具 举报

dasdasdas 发表于 2016-10-15 11:22:00
男人靠的住,母猪能上树!  
回复 支持 反对

使用道具 举报

微笑舍求 发表于 2016-10-15 14:53:59
我只是路过,不发表意见
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我要投稿

推荐阅读

扫码访问 @iTTTTT瑞翔 的微博
回页顶回复上一篇下一篇回列表手机版
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 )|网站地图 酷辣虫

© 2001-2016 Comsenz Inc. Design: Dean. DiscuzFans.

返回顶部 返回列表