Docker 入门教程(三)

原创 2016年06月01日 13:37:12

易于自动化的命令

Dockerfile包含创建镜像所需要的全部指令。基于在Dockerfile中的指令,我们可以使用Docker build命令来创建镜像。通过减少镜像和容器的创建过程来简化部署。

Dockerfile支持支持的语法命令如下:
INSTRUCTION argument

指令不区分大小写。但是,命名约定为全部大写。

所有Dockerfile都必须以FROM命令开始。 FROM命令会指定镜像基于哪个基础镜像创建,接下来的命令也会基于这个基础镜像(译者注:CentOS和Ubuntu有些命令可是不一样的)。FROM命令可以多次使用,表示会创建多个镜像。具体语法如下:
FROM <image name>

例如:
FROM ubuntu

上面的指定告诉我们,新的镜像将基于Ubuntu的镜像来构建。

FROM命令,DockefFile还提供了一些其它的命令以实现自动化。在文本文件或Dockerfile文件中这些命令的顺序就是它们被执行的顺序。

让我们了解一下这些有趣的Dockerfile命令吧。
1. MAINTAINER:设置该镜像的作者。语法如下:
MAINTAINER <author name>

2. RUN:在shell或者exec的环境下执行的命令。RUN指令会在新创建的镜像上添加新的层面,接下来提交的结果用在Dockerfile的下一条指令中。语法如下:
RUN 《command》

3. ADD:复制文件指令。它有两个参数<source>和<destination>。destination是容器内的路径。source可以是URL或者是启动配置上下文中的一个文件。语法如下:
ADD 《src》 《destination》

4. CMD:提供了容器默认的执行命令。 Dockerfile只允许使用一次CMD指令。 使用多个CMD会抵消之前所有的指令,只有最后一个指令生效。 CMD有三种形式:
CMD ["executable","param1","param2"]
CMD ["param1","param2"]
CMD command param1 param2

5. EXPOSE:指定容器在运行时监听的端口。语法如下:
EXPOSE <port>;

6. ENTRYPOINT:配置给容器一个可执行的命令,这意味着在每次使用镜像创建容器时一个特定的应用程序可以被设置为默认程序。同时也意味着该镜像每次被调用时仅能运行指定的应用。类似于CMD,Docker只允许一个ENTRYPOINT,多个ENTRYPOINT会抵消之前所有的指令,只执行最后的ENTRYPOINT指令。语法如下:
ENTRYPOINT ["executable", "param1","param2"]
ENTRYPOINT command param1 param2

7. WORKDIR:指定RUNCMDENTRYPOINT命令的工作目录。语法如下:
WORKDIR /path/to/workdir

8. ENV:设置环境变量。它们使用键值对,增加运行程序的灵活性。语法如下:
ENV <key> <value>

9. USER:镜像正在运行时设置一个UID。语法如下:
USER <uid>

10. VOLUME:授权访问从容器内到主机上的目录。语法如下:
VOLUME ["/data"]

Dockerfile最佳实践

与使用的其他任何应用程序一样,总会有可以遵循的最佳实践。你可以阅读更多有关Dockerfile的最佳实践

以下是我们列出的基本的Dockerfile最佳实践:
  • 保持常见的指令像MAINTAINER以及从上至下更新Dockerfile命令;
  • 当构建镜像时使用可理解的标签,以便更好地管理镜像;
  • 避免在Dockerfile中映射公有端口;
  • CMDENTRYPOINT命令请使用数组语法。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Day 21:Docker 入门教程

几个月以前,红帽(Red Hat)宣布了在 Docker 技术上和 dotCloud 建立合作关系。在那时候,我并没有时间去学习关于 Docker 的知识,所以在今天,趁着这个 30 天的挑战,...

Docker入门教程(一)——基本介绍

1、Docker概念Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,...

docker入门教程

什么是Docker? 简介:Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs...

Docker入门教程(一)介绍

 【编者的话】DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第一篇,介绍了Docker的基础概念以及Docker的安装。 Docker是一个新的容器化的...

Docker入门教程(一)介绍

Docker入门教程(一)介绍 【编者的话】DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第一篇,介绍了Docker的基础概念以及Docker的安装。...

通过Ruby on Rails和docker构建微服务架构之入门教程

如何通过Ruby on Rails和docker构建微服务架构之入门教程

eclipse再见,android studio 新手入门教程(三)Github(.ignore忽略规则)的使用

上传代码到githubandroid studio里集成了上传代码到github的功能,所以使用上还是很简单的,设置里添加账号并测试,之后就可以很方便地上传代码到github了如果你的项目是使用and...

unity自带寻路Navmesh入门教程(三)

继续介绍NavMesh寻路的功能,接下来阿赵打算讲一下以下两个例子,先看看完成的效果:    第一个例子对于喜欢DOTA的朋友应该很熟悉了,就是不同小队分不同路线进攻的寻路,红绿蓝...

Spring 入门教程(三) 注入和自动装配

Spring注入是指在启动Spring容器加载bean配置的时候,对类变量的赋值。   两种常用注入方式:设值注入和构造注入 下面就这部分知识看代码以及代码中的注解: 1、首先...
  • code_7
  • code_7
  • 2015-08-18 20:55
  • 1185

正则表达式入门教程(三)

这篇是正则表达式的第三篇,我们接着第二篇的知识点开始讲: 一:反义 有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义: 表中上面四...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)