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
- 1、shell 格式: RUN <命令>
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 | 定义匿名数 |