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命令请使用数组语法。

docker 入门教程指南

关于 docker 今天云平台的同事提到, 现在的运维就是恶性循环, 因为大家都在申请机器, 显然的是, 大家申请机器都是按照自己的峰值申请的, 而为了保证突发状况, 如 ddos, 双11 等...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年12月20日 23:08
  • 757

Docker入门教程(三)Dockerfile

【编者的话】DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第三篇,介绍了Dockerfile的语法,DockerOne目前在代码高亮部分还有些Bug,我们会尽快修复...
  • terry198608
  • terry198608
  • 2017年07月07日 14:06
  • 47

Docker 入门教程

Docker简介 Docker是一个轻量级容器技术,类似于虚拟机技术(xen、kvm、vmware、virtual)。Docker是直接运行在当前操作系统(Linux)之上,而不是运行在虚拟机中,但...
  • xiaolyuh123
  • xiaolyuh123
  • 2017年05月19日 14:33
  • 467

Docker入门教程(三)——Dockerfile

Docker为我们提供了Dockerfile来解决自动化的问题。在这篇文章中,我们将讨论什么是Dockerfile,它能够做到的事情以及Dockerfile的一些基本语法。1、易于自动化的命令Dock...
  • eff666
  • eff666
  • 2017年03月09日 19:20
  • 171

ADO.net入门(三):送上礼物讨欢喜

成功连接到数据库,意味着用户到数据库是一条平坦的大桥,就可以发送自己的意愿,要求数据库返回相应的结果。 于是,第二步就是向数据库发出自己的意愿和礼物。 可以发送...
  • u014366427
  • u014366427
  • 2014年03月26日 11:04
  • 544

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

unity自从3.5版本之后,增加了NavMesh寻路的功能。在此之前,unity用户只能通过第三方插件(如Astar寻路插件)等做寻路功能。阿赵我也使用过A*寻路插件,A*的原理并不复杂,有兴趣的朋...
  • wjlsxl_whb
  • wjlsxl_whb
  • 2016年11月16日 11:43
  • 538

Docker教程(一) Docker入门教程

Docker,直译是码头工人。这个码头工人搬运的是集装箱(Container)。 Docker通过Linux Container技术将任意类型的应用进行包装,变成一种标准化的,可移植的,自管理的组件。...
  • yuan_xw
  • yuan_xw
  • 2016年07月17日 23:05
  • 4457

Docker入门教程

本文系转载:http://blog.csdn.net/opensure/article/details/46490749 参考资料:docker中文手册 :http://www.docker.org...
  • ToBeTheEnder
  • ToBeTheEnder
  • 2016年09月09日 10:21
  • 435

docker入门教程

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

Docker 入门教程(一)

Docker 特征 Docker有不少有趣的功能,通过本教程相信你会更好地理解它们。Docker的特性主要包括以下几点: 速度飞快以及优雅的隔离框架物美价廉CPU/内存的低消耗快速开/关机 ...
  • chajinglong
  • chajinglong
  • 2016年06月01日 10:16
  • 348
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Docker 入门教程(三)
举报原因:
原因补充:

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