最近一直和docker打交道,docker官网也提供了很多的命令,今天来详细的学习dockerfile中的指令。docker官网dockerfile指令详解
什么是Dockerfile
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。对于开发人员,可以为开发团队提供一个完全一致的开发环境;对于测试人员,可以直接拿开发时所创建的镜像或者通过Dockerfile文件构建一个新的镜像开发工作;对于运维人员,在部署的时候,可以实现应用俄无缝移植。
常用命令
命令 | 作用 | 备注 |
---|---|---|
FROM image_name:tag | 定义了使用哪个基础镜像启动构建流程 | 基础镜像 前提是镜像是存在的 假如不存在就会下载 是必须的 构建的镜像都是基于基础镜像的 |
MAINTAINER user_name | 声明镜像的创建者 | 选填 |
ENV key value | 设置开发环境 可以设置多个 | 比如设置path等 |
RUN command | 是Dockerfile的核心部署 可以写多条 | 命令比如复杂的话直接将命令直接写一个sh脚本 然后run 这个脚本 |
ADD source_dir/file dest_dir/file | 添加一个文件从原路径/文件到目标路径文件 压缩文件会自动解压 | |
COPY source_dir/file dest_dir/file | 复制一个文件从原路径到目标路径 | 压缩文件不会自动解压 |
WORKDIR | 工作目录 | 也就是登录容器之后也是这个目录。比如copy命令中的原路径和目标路径 是相对路径 也就是相对于工作目录而言的 |
EXPOSE | 能够让运维人员知道开启了那些端口 | |
ENTRYPOINT | 正统地用于定义容器启动以后的执行体,容器的入口 | 支持命令行和shell,比如我们定义一个启动的boot.sh脚本 可以直接ENTRYPOINT /bin/sh bin/boot.sh start 来启动 。在ENTRYPOINT命令后面再加run命令 /copy命令等都是不执行的,它就是容器启动的最后的命令了。有一次修改Dockerfile文件 直接在ENTRYPOINT命令后面加了一个Copy的命令 然后copy命令不生效 被自己蠢哭名称 |
Dockerfile | 必须叫Dockerfile | 首字母要大写!!!! |