Dockerfile
一、简介
什么是Dockerfile?
Docker类似于脚本,实现自动化部署环境并生成镜像
镜像构建流程:
- 1、选择基础镜像
- 2、创建并运行一个容器
- 3、进入容器
- 4、部署/搭建环境
- 5、构造新镜像
Dockerfile就是把上述的镜像构建流程实现脚本自动化
| 使用准则 | 说明 |
|---|---|
| 大 | 首字母必须大写 |
| 空 | 尽量将 Dockerfile 放在空目录中 |
| 单 | 每个容器尽量只有一个功能 |
| 少 | 执行的命令越少越好 |
使用Dockerfile脚本构建镜像的命令
docker build -t <镜像名>:<版本号> <Dockerfile所在的目录> 说明: •-t指定构建后的镜像信息,默认是以构建后的 docker image 的 id 号为镜像名称
二、基础指令
1、FROM
FROM <image> FROM <image>:<tag> 说明:FROM 是 Dockerfile 里的第一条而且只能是除了首行注释之外的第一条指令
2、MAINTAINER
MAINTAINER <name>
说明:指定该 dockerfile 文件的维护者信息。类似我 docker commit 时候使用-a参数指定的信息
3、RUN
RUN <command> (shell模式) RUN ["executable", "param1", "param2"]。 (exec 模式) 说明:表示当前镜像构建时运行的命令
| 模式 | 格式 | 示例 |
|---|---|---|
| shell 模式 | 类似于 /bin/bash -c command | RUN echo hello |
| exec(列表)模式 | 类似于 RUN ["/bin/bash", “-c”, “command”] | RUN [“echo”, “hello”] |
4、ADD
ADD <src>... <dest> ADD ["<src>",... "<dest>"]
说明:
- 将指定的 文件复制到容器文件系统中的
- src 指的是宿主机,dest 指的是容器
- 如果源文件是个压缩文件,则docker会自动帮解压到指定的容器中(无论目标是文件还是目录,都会当成目录处理)
5、COPY
COPY <src>... <dest> COPY ["<src>",... "<dest>"]
说明:单纯复制文件场景,Docker推荐使用COPY
6、WORKDIR
WORKDIR /path/to/workdir (shell 模式)
说明:
-
切换目录,为后续的RUN、CMD、ENTRYPOINT 指令配置工作目录,相当于cd
-
可以多次切换(相当于cd命令),
-
也可以使用多个WORKDIR 指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。
7、EXPOSE
EXPOSE <port> [<port>...]
说明:设置Docker容器对外暴露的端口号,Docker为了安全,不会自动对外打开端口,如果需要外部提供访问,还需要启动容器时增加-p或者-P参数对容器的端口进行分配。
8、ENTRYPOINT
ENTRYPOINT ["executable", "param1","param2"] (exec 模式) ENTRYPOINT command param1 param2 (shell模式)
说明:每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效。
浙公网安备 33010602011771号