Dockerfile 指令简介
2017-05-18 00:00
701 查看
一、常用指令
FROM指令说明
已经存在的镜像
基础镜像
必须是第一条非注释指令
MAINTAINER指令说明
指定镜像的作者信息,包括镜像的所有者和联系信息
RUN指令说明
shell模式
/bin/sh -c command
例如:RUN echo hello
exec模式
例如:RUN ["/bin/bash","-c","echo hello"]
两条RUN指令合并为一条RUN指令,例如:
RUN yum update && yum install -y nginx
EXPOSE指令说明
指定运行该镜像的容器使用的端口
二、COM、ENTERYPONINT用来指定在容器运行时运行的命令
COM指令说明
说明:CMD指令指定容器运行的默认行为,CMD指令会被RUN命令参数覆盖
ENTERYPOINT指令说明
ENTERYPOINT指令不会被docker run 命令中指定的启动命令所覆盖,可以使用docker run --entrypoint覆盖
三、ADD、COPY、VOLUME用来设置镜像的目录和文件
都是将文件或目录复制到使用Dockerfile构建的镜像中
ADD指令说明
注意:ADD指令自动对压缩包进行解压缩
COPY指令说明
ADD vs COPY
ADD 包含类似tar的解压功能
如果单纯复制文件,Dokcer推荐使用COPY
docker推荐使用 curl、wget 来获取文件
VOLUME指令说明
VOLUME["/data"]
用来想基于镜像创建的容器添加卷,一个卷可以存在一个或多个容器的特定目录,这个目录可以绕过联合文件系统,并提供如共享数据、数据持久化的功能
四、镜像在构建及容器运行时的环境设置
WORKDIR指令说明
在容器内部设置工作目录
在构建中为后续的指令指定工作目录
通常使用绝对路径,如果使用相对路径,那么路径会一直传递下去
例如:
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
/a/b/c
ENV指令说明
用来设置环境变量,作用于构建构 成中或运行过程中
USER指令说明
指定容器以什么用户的身份来运行
例如: USER nginx
USER user USER uid
USER user:group USER uid:gid
USER user:gid USER uid:group
如果不指定USER,那么默认使用root用户
五、类似触发器的指令
ONBUILD指令说明
为镜像添加触发器
当一个镜像被其他镜像作为基础镜像时执行,会在构建过程中插入指令
例子:
此Dockerfile文件指令实现基于Docker官方的的Jenkins镜像,构建包含Maven功能的自定义镜像功能。
欢迎大家关注懒也要有正确的方式公众号
FROM指令说明
FROM <image> FROM <image>:<tag>
已经存在的镜像
基础镜像
必须是第一条非注释指令
MAINTAINER指令说明
MAINTAINER <name>
指定镜像的作者信息,包括镜像的所有者和联系信息
RUN指令说明
RUN <command> (shell模式) RUN ["executable","param1","param2"] (exec模式)
shell模式
/bin/sh -c command
例如:RUN echo hello
exec模式
例如:RUN ["/bin/bash","-c","echo hello"]
两条RUN指令合并为一条RUN指令,例如:
RUN yum update && yum install -y nginx
EXPOSE指令说明
EXPOSE <port> [<port>...]
指定运行该镜像的容器使用的端口
二、COM、ENTERYPONINT用来指定在容器运行时运行的命令
COM指令说明
CMD ["executable","param1","param2"] (exec模式) CMD command param1 param2 (shell模式)
说明:CMD指令指定容器运行的默认行为,CMD指令会被RUN命令参数覆盖
ENTERYPOINT指令说明
ENTERYPOINT ["executable","param1","param2"] (exec模式) ENTERYPOINT command param1 param2 (shell模式)
ENTERYPOINT指令不会被docker run 命令中指定的启动命令所覆盖,可以使用docker run --entrypoint覆盖
三、ADD、COPY、VOLUME用来设置镜像的目录和文件
都是将文件或目录复制到使用Dockerfile构建的镜像中
ADD指令说明
ADD <src>...<dest> ADD [<src>...<dest>] (适用于文件路径中有空格的情况)
注意:ADD指令自动对压缩包进行解压缩
COPY指令说明
COPY <src>...<dest> COPY [<src>...<dest>] (适用于文件路径中有空格的情况)
ADD vs COPY
ADD 包含类似tar的解压功能
如果单纯复制文件,Dokcer推荐使用COPY
docker推荐使用 curl、wget 来获取文件
VOLUME指令说明
VOLUME["/data"]
用来想基于镜像创建的容器添加卷,一个卷可以存在一个或多个容器的特定目录,这个目录可以绕过联合文件系统,并提供如共享数据、数据持久化的功能
四、镜像在构建及容器运行时的环境设置
WORKDIR指令说明
WORKDIR /path/to/workdir
在容器内部设置工作目录
在构建中为后续的指令指定工作目录
通常使用绝对路径,如果使用相对路径,那么路径会一直传递下去
例如:
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
/a/b/c
ENV指令说明
用来设置环境变量,作用于构建构 成中或运行过程中
ENV <key> <value> ENV <key>=<value>...
USER指令说明
指定容器以什么用户的身份来运行
例如: USER nginx
USER user USER uid
USER user:group USER uid:gid
USER user:gid USER uid:group
如果不指定USER,那么默认使用root用户
五、类似触发器的指令
ONBUILD指令说明
为镜像添加触发器
当一个镜像被其他镜像作为基础镜像时执行,会在构建过程中插入指令
例子:
此Dockerfile文件指令实现基于Docker官方的的Jenkins镜像,构建包含Maven功能的自定义镜像功能。
# # MAINTAINER Howard.Ma <howardma@xxxx.com> # DOCKER-VERSION 1.12.6 # # Docker base docker.io/jenkins : Dockerfile for building Jenkins_Maven images # # 必须是第一条非注释指令 FROM docker.io/jenkins # 指定镜像的作者信息,包括镜像的所有者和联系信息 MAINTAINER Howard.Ma <howadma@xxxx.com> # 指定容器以什么用户的身份来运行 USER root # 在容器内部设置工作目录,在构建中为后续的指令指定工作目录 WORKDIR /var/maven3 # 将文件或目录复制到使用Dockerfile构建的镜像中,注意ADD指令自带解压缩功能 ADD apache-maven-3.5.0-bin.tar.gz /var/maven3 # 用来设置环境变量,作用于构建构过程或运行过程中 ENV MAVEN_HOME=/var/maven3/apache-maven-3.5.0 #ENV MAVEN_OPTS=[-Xms256m -Xmx512m] ENV PATH=$PATH:$MAVEN_HOME/bin # 运行指令 RUN echo "MAVEN_HOME=/var/maven3/apache-maven-3.5.0\nMAVEN_OPTS=-Xms256m -Xmx512m\nPATH=$PATH:$MAVEN_HOME/bin" >> /etc/profile
欢迎大家关注懒也要有正确的方式公众号
相关文章推荐
- Docker1(简介与Dockerfile)
- Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较
- Dockerfile 第5关:ONBUILD和VOLUME指令
- Dockerfile中的ENTRYPOINT和CMD指令详解与比较
- docker学习笔记(五): Dockerfile指令
- Dockerfile 常用指令 - 每天5分钟玩转 Docker 容器技术(16)
- Dockerfile指令
- dockerfile指令
- centos7下安装docker(dockerfile常用的指令)
- Docker基本命令与使用 —— Dockerfile指令与构建(三)
- Dockerfile中的ARG指令详解
- docker学习笔记15:Dockerfile 指令 USER介绍
- dockerfile的指令
- docker筑基篇-05-Dockerfile常用指令
- 使用Dockerfile创建镜像各常用指令说明 - 知识林
- Dockerfile指令总结
- docker学习笔记16:Dockerfile 指令 ADD 和 COPY介绍
- docker学习笔记16:Dockerfile 指令 ADD 和 COPY介绍
- Dockerfile 指令 ADD 和 COPY介绍
- dockerfile指令 笔记