指令不区分大小写。但是,命名约定为全部大写。
所有Dockerfile都必须以FROM命令开始。 FROM命令会指定镜像基于哪个基础镜像创建,接下来的命令也会基于这个基础镜像(译者注:CentOS和Ubuntu有些命令可是不一样的)。FROM命令可以多次使用,表示会创建多个镜像。具体语法如下:
FROM
FROM ubuntu
上面的指定告诉我们,新的镜像将基于Ubuntu的镜像来构建。
继FROM命令,DockefFile还提供了一些其它的命令以实现自动化。在文本文件或Dockerfile文件中这些命令的顺序就是它们被执行的顺序。
让我们了解一下这些有趣的Dockerfile命令吧。 1. MAINTAINER:设置该镜像的作者。语法如下:
MAINTAINER
2. RUN:在shell或者exec的环境下执行的命令。RUN指令会在新创建的镜像上添加新的层面,接下来提交的结果用在Dockerfile的下一条指令中。语法如下:
RUN 《command》
3. ADD:复制文件指令。它有两个参数
ADD 《src》 《destination》
4. CMD:提供了容器默认的执行命令。 Dockerfile只允许使用一次CMD指令。 使用多个CMD会抵消之前所有的指令,只有最后一个指令生效。 CMD有三种形式:
CMD [\CMD [\CMD command param1 param2
5. EXPOSE:指定容器在运行时监听的端口。语法如下:
EXPOSE
6. ENTRYPOINT:配置给容器一个可执行的命令,这意味着在每次使用镜像创建容器时一个特定的应用程序可以被设置为默认程序。同时也意味着该镜像每次被调用时仅能运行指定的应用。类似于CMD,Docker只允许一个ENTRYPOINT,多个ENTRYPOINT会抵消之前所有的指令,只执行最后的ENTRYPOINT指令。语法如下:
ENTRYPOINT [\ENTRYPOINT command param1 param2
7. WORKDIR:指定RUN、CMD与ENTRYPOINT命令的工作目录。语法如下:
WORKDIR /path/to/workdir
8. ENV:设置环境变量。它们使用键值对,增加运行程序的灵活性。语法如下:
ENV
9. USER:镜像正在运行时设置一个UID。语法如下:
USER
10. VOLUME:授权访问从容器内到主机上的目录。语法如下:
VOLUME [\
Dockerfile最佳实践
与使用的其他任何应用程序一样,总会有可以遵循的最佳实践。你可以阅读更多有关Dockerfile的最佳实践。
以下是我们列出的基本的Dockerfile最佳实践:
? ? ? ?
保持常见的指令像MAINTAINER以及从上至下更新Dockerfile命令; 当构建镜像时使用可理解的标签,以便更好地管理镜像; 避免在Dockerfile中映射公有端口;
CMD与ENTRYPOINT命令请使用数组语法。
在接下来的文章中,我们将讨论Docker Registry及其工作流程。
Docker入门教程(四)Docker Registry
【编者的话】DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它是Docker中的重要组件。本文通过情景演绎的方式对其进行了介绍,图文并茂,强烈推荐读者阅读。
在Docker系列教程的上一篇文章中,我们讨论了Dockerfile的重要性并提供了一系列Dockerfile的命令,使镜像的自动构建更加容易。在这篇文章中,我们将介绍Docker的一个重要组件:Docker Registry。它是所有仓库(包括共有和私有)以及工作流的中央Registry。在深入Docker Registry之前,让我们先去看看一些常见的术语和与仓库相关的概念。
1. Repositories(仓库)可以被标记为喜欢或者像书签一样标记起来
2. 用户可以在仓库下评论。
3. 私有仓库和共有仓库类似,不同之处在于前者不会在搜索结果中显示,也没有访问它的权限。只有用
户设置为合作者才能访问私有仓库。 4. 成功推送之后配置webhooks。
Docker Registry有三个角色,分别是index、registry和registry client。
角色 1 -- Index
index 负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。它使用以下组件维护这些信息:
? ? ? ?
Web UI 元数据存储 认证服务 符号化
这也分解了较长的URL,以方便使用和验证用户存储库。
角色 2 --Registry
registry是镜像和图表的仓库。然而,它没有一个本地数据库,也不提供用户的身份认证,由S3、云文件和本地文件系统提供数据库支持。此外,通过Index Auth service的Token方式进行身份认证。Registries可以有不同的类型。现在让我们来分析其中的几种类型:
1. Sponsor Registry:第三方的registry,供客户和Docker社区使用。 2. Mirror Registry:第三方的registry,只让客户使用。
3. Vendor Registry:由发布Docker镜像的供应商提供的registry。
4. Private Registry:通过设有防火墙和额外的安全层的私有实体提供的registry。
相关推荐: