Dockerfile指令总结
指令的一般格式为INSTRUCTION arguments,指令包含FROM、MAINTAINER、RUN等。
FROM
格式为FROM <image>或FROM <image>:<tag>。
第一条指令必须为FROM指令。而且,假设在同一个Dockerfile中创建多个镜像时。能够使用多个FROM指令(每一个镜像一次)。
MAINTAINER
格式为MAINTAINER <name>,指定维护者信息。
RUN
格式为RUN <command>或RUN ["executable", "param1", "param2"]。
前者将在shell终端中执行命令,即/bin/sh -c;后者则使用exec执行。指定使用其他终端能够通过另外一种方式实现,比如RUN ["/bin/bash", "-c", "echo hello"]。
每条RUN指令将在当前镜像基础上运行指定命令,并提交为新的镜像。当命令较长时能够使用\来换行。
CMD
支持三种格式
CMD ["executable","param1","param2"]使用exec运行,推荐方式。CMD command param1 param2在/bin/sh中运行。提供给须要交互的应用;CMD ["param1","param2"]提供给ENTRYPOINT的默认參数;
指定启动容器时运行的命令,每一个Dockerfile仅仅能有一条CMD命令。假设指定了多条命令,仅仅有最后一条会被运行。
假设用户启动容器时候指定了执行的命令。则会覆盖掉CMD指定的命令。
EXPOSE
格式为EXPOSE <port> [<port>...]。
告诉Docker服务端容器暴露的port号,供互联系统使用。
ENV
格式为ENV <key> <value>。 指定一个环境变量,会被兴许RUN指令使用,并在容器执行时保持。
比如
ENV PG_MAJOR 9.3
ENV PG_VERSION 9.3.4
RUN curl -SL http://example.com/postgres-$PG_VERSION.tar.xz | tar -xJC /usr/src/postgress && …
ENV PATH /usr/local/postgres-$PG_MAJOR/bin:$PATH
ADD
格式为ADD <src> <dest>。
该命令将复制指定的<src>到容器中的<dest>。
当中<src>能够是Dockerfile所在文件夹的一个相对路径;也能够是一个URL;还能够是一个tar文件(自己主动解压为文件夹)。
则。
COPY
格式为COPY <src> <dest>。
复制本地主机的<src>(为Dockerfile所在文件夹的相对路径)到容器中的<dest>。
当使用本地文件夹为源文件夹时。推荐使用COPY。
ENTRYPOINT
两种格式:
ENTRYPOINT ["executable", "param1", "param2"]ENTRYPOINT command param1 param2(shell中运行)。
配置容器启动后运行的命令。而且不可被docker run提供的參数覆盖。
每一个Dockerfile中仅仅能有一个ENTRYPOINT。当指定多个时。仅仅有最后一个起效。
VOLUME
格式为VOLUME ["/data"]。
创建一个能够从本地主机或其它容器挂载的挂载点,一般用来存放数据库和须要保持的数据等。
USER
格式为USER daemon。
指定执行容器时的username或UID,兴许的RUN也会使用指定用户。
当服务不须要管理员权限时,能够通过该命令指定执行用户。而且能够在之前创建所须要的用户,比如:RUN groupadd -r postgres && useradd -r -g postgres postgres。
要暂时获取管理员权限能够使用gosu,而不推荐sudo。
WORKDIR
格式为WORKDIR /path/to/workdir。
为兴许的RUN、CMD、ENTRYPOINT指令配置工作文件夹。
能够使用多个WORKDIR指令,兴许命令假设參数是相对路径,则会基于之前命令指定的路径。比如
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
则终于路径为/a/b/c。
ONBUILD
格式为ONBUILD [INSTRUCTION]。
配置当所创建的镜像作为其他新创建镜像的基础镜像时。所运行的操作指令。
比如,Dockerfile使用例如以下的内容创建了镜像image-A。
[...]
ONBUILD ADD . /app/src
ONBUILD RUN /usr/local/bin/python-build --dir /app/src
[...]
假设基于A创建新的镜像时。新的Dockerfile中使用FROM image-A指定基础镜像时,会自己主动运行ONBUILD指令内容,等价于在后面加入了两条指令。
FROM image-A
#Automatically run the following
ADD . /app/src
RUN /usr/local/bin/python-build --dir /app/src
使用ONBUILD指令的镜像,推荐在标签中注明,比如ruby:1.9-onbuild。
Dockerfile指令总结的更多相关文章
- docker学习笔记17:Dockerfile 指令 ONBUILD介绍
ONBUILD指令可以为镜像添加触发器.其参数是任意一个Dockerfile 指令. 当我们在一个Dockerfile文件中加上ONBUILD指令,该指令对利用该Dockerfile构建镜像(比如为A ...
- docker之Dockerfile指令介绍
Docker通过对于在Dockerfile中的一系列指令的顺序解析实现自动的image的构建 通过使用build命令,根据Dockerfiel的描述来构建镜像 通过源代码路径的方式 通过标准输入流的方 ...
- docker Dockerfile指令ADD和COPY的区别,添加目录方法
docker Dockerfile指令ADD和COPY的区别,添加目录方法 ADD指令的功能是将主机构建环境(上下文)目录中的文件和目录.以及一个URL标记的文件 拷贝到镜像中.其格式是: ADD 源 ...
- Dockerfile指令学习 (转)
原文地址:http://blog.csdn.net/we_shell/article/details/38445979 Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一 ...
- Docker学习笔记三 Dockerfile 指令 定制镜像
本文地址:https://www.cnblogs.com/veinyin/p/10412079.html 镜像是分层存储的,每一层都是独立存在的,修改当前层并不会修改其依赖的上一层,删除某一层也只是 ...
- Dockerfile 指令汇总及解析
原文地址:http://www.maoyupeng.com/dockerfile-command-introduction.html 什么是Dockerfile Dockerfile是由一系列 ...
- Docker基本命令与使用 —— Dockerfile指令与构建(三)
一.Dockerfile指令上 1.指令格式 # Comment 注释, 以#开头 INSTRUCTION argument 以大写的指令+参数 #First Dockerfile 注释 FROM u ...
- Docker学习(三): Dockerfile指令介绍
特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...
- Dockerfile指令:
Dockerfile指令: 第一行注释,指令是大写字母开头, FROM指令: FROM<image>,后面跟镜像名, FROM<image>:<tag>,后面跟镜像 ...
- Dockerfile指令的使用
关于Dockerfile Dockerfile实际上就是一系列创建Docker镜像的脚本, 虽然可以通过命令行来执行, 但是那样繁琐而且容易出错. Dockerfile指令 FROM 他的意思是在创建 ...
随机推荐
- 基于Visual C++2013拆解世界五百强面试题--题6-double类型逆序
请设计一个函数,不许用到字符串函数,用数学运算,将double类型数据转换,例如123.456转换成654.321 首先想到依次提取他的每一个位数,然后进行运算,移动每一位数到相应位置,结果相加就能逆 ...
- A2W和W2A :很好的多字节和宽字节字符串的转换宏
以前看<Window核心编程>,感觉多字节和宽字节之间还比较麻烦的,至少MultiByteToWideChar函数和WideCharToMultiByte函数有足够多的参数的意义让我们去理 ...
- Noip2010提高组总结
将Noip2010重新做了一遍,第一遍做下来居然只有290分,比当年浙江的一等线低了20分,因为各种坏习惯丢掉了许多分数,Noip时需要特别注意! T1:机器翻译 第一题直接暴力,内存足够所以不用循环 ...
- SSH 配置日记
1 注意struts2-spring-plugin.jar的导入. Unable to load configuration. - action 异常.需要导入这个包 2 很久都跑不通的 ...
- UITextField align left margin
如果我们想让我们的UITextField输入的字体偏移几个像素,我们常常用空格来代替,有时候我们不想用空格的话怎么办? #import <UIKit/UIKit.h> @interface ...
- C++ Primer 学习笔记_75_模板与泛型编程 --模板定义
模板与泛型编程 --模板定义 引言: 所谓泛型程序就是以独立于不论什么特定类型的方式编写代码.使用泛型程序时,我们须要提供详细程序实例所操作的类型或值. 模板是泛型编程的基础.使用模板时能够无须了解模 ...
- .net c# 提交包含文件file 的form表单 获得文件的Stream流
1.前台html代码 要写一个有id的form,可是不能有runat="server"属性.由于一个页面中,有这个属性的form表单仅仅能有一个. 再要有一个有name的ifram ...
- [译]Stairway to Integration Services Level 14 - 项目转换(SSIS 2008 ~ SSIS 2012)
介绍 本文中我们会用SSDT把第一个SSIS项目转换为 SSIS 2012, 为什么要升级到2012? 你可能想使用SSIS 2012新的特性. 又或者想使用 SSIS 2012 Catalog. 想 ...
- linux驱动: 如何向模块传递参数, module_param和module_param_array
如何向模块传递参数,Linux kernel 提供了一个简单的框架. 1. module_param(name, type, perm); name 既是用户看到的参数名,又是模块内接受参数的 ...
- WebSphere优化
优化WebSphere WebSphere里的profile刚配完,一般默认的heapsize即Xms与Xmx值只有256mb,而IBM WAS是几个J2EE服务器中最吃内存的机器,在布署一些EAR应 ...