dockerfile 简介
Dockerfile
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。
常用命令
命令 | 作用 |
---|---|
FROM image_name:tag | 定义使用哪个基础镜像启动构建流程 |
MAINAINER user_name | 声明镜像的创作者 |
ENV key value | 配置环境变量 |
RUN command | 执行命令 |
ADD source_dir/file dest_dir/file | 将宿主机的文件复制到容器内,如果是压缩文件,会在复制后自动解压 |
COPY source_dir/file dest_dir/file | 和ADD命令一样,但不会自动解压缩文件 |
WORKDIR path_dir | 设置工作目录 |
CMD | 容器启动以后,默认的执行的命令 |
ENTRYPOINT | 用于定义容器启动以后的执行体,也就是容器的入口 |
CMD和ENTRYPOINT 区别
CMD给出的是一个容器的默认的可执行体。也就是容器启动以后,默认的执行的命令。
如果docker run没有指定任何的执行命令或者dockerfile里面也没有ENTRYPOINT,那么,就会使用CMD指定的默认的执行命令执行。
CMD的三种用法:
The CMD instruction has three forms:
CMD ["executable","param1","param2"] (exec form, this is the preferred form)
CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
CMD command param1 param2 (shell form)
当存在ENTRYPOINT时,CMD命令会被覆盖,也就是说entrypoint才是正统地用于定义容器启动以后的执行体的
ENTRYPOINT has two forms:
ENTRYPOINT ["executable", "param1", "param2"] (exec form, preferred)
ENTRYPOINT command param1 param2 (shell form)
如果RUN命令后面有东西,那么后面的全部都会作为ENTRYPOINT的参数。如果RUN后面没有额外的东西,但是CMD有,那么CMD的全部内容会作为ENTRYPOINT的参数,这同时是CMD的第二种用法。
ADD和COPY命令的区别
-
ADD在复制后可以对压缩文件自动解压缩
-
ADD命令除了可以复制宿主机文件,还可以从远程复制资源到容器内(ADD指令不支持认证,远程获取资源推荐使用RUN wget 或者 RUN curl)