docker file

57 阅读2分钟

docker file

是什么

dockerfile 是一个备用来构建docker镜像的文本文件,该文件包含了一行行的指令所形成的镜像。 Dockerfile 中每一个指令都会新建一层

镜像解决的问题

  • 镜像的透明性问题
  • 镜像layer层复用
  • 镜像的维护与分享

怎么编写(结构定义)

from

  • 概念指定基础镜像(必备指令,且必须是第一条指令。)环境/应用包
  • 以 scratch 为基础镜像,表示你不以任何镜像为基础。

RUN

  • RUN 指令用于执行终端操作的 shell 命令
  • 格式有如下两种:
    • 1、shell 格式: RUN <命令>
      这种格式好比在命令行中输入的命令一样。
    • 2、exec 格式: RUN ["可执行文件", "参数1", "参数2"]
      RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline

workdir

命令工作路径

copy

将所有程序拷贝到docker镜像中
copy <本地路径> <目标路径>

cmd

容器内执行命令

注释& 换行

Dockerfile 支持 shell 格式命令末尾添加 \ 换行,以及行首通过 # 进行注释。

构建镜像

docker build -t nginx:test .

"." 指定上下文路径,也表示在当前目录下。
构建镜像时,指定上下文路径,客户端会将路径下的所有内容打包,并上传给 Docker 引擎,这样它就可以获取构建镜像所需的一切文件了。

其他构建方法

  • 通过 Git repo 构建镜像
docker build -t hello-world https://github.com/docker-library/hello-world.git#master:amd64/hello-world
  • 通过 tar 压缩包构建镜像
docker build http://server/context.tar.gz
  • 从标准输入中读取 Dockerfile 进行构建
docker build - < Dockerfile
# or
cat Dockerfile | docker build -
  • 从标准输入中读取上下文压缩包进行构建
docker build - < context.tar.gz

常用命令

命令作用
HEALTHCHECK健康检查
ENV设置环境变量
EXPOSE暴露端口
USER指定当前用户
LABEL为镜像添加元数据
ARG构建参数
VOLUMN定义匿名数