Dockerfile制作镜像
-
镜像生成的途径
- Dockerfile制作
- 基于容器制作(直接在容器中制作)
-
Dockerfile只是构建Docker映像的源代码
- Docker可以通过读取Dockerfile中的指令来自动构建图像
- Dockerfile是一个文本文档,包含用户可以在命令行上调用的所有命令来组装一个图像
- 使用docker构建用户可以创建一个自动构建,该构建可以连续执行多个命令行指令
-
Dockerfile的文件格式
- 格式(Format)
# Comment
以#
开头的为注释信息INSTRUCTION arguments
指令和参数
- Dockerfile的指令不区分大小写
- 通常都会将指令写成大写,以便于区分指令和参数。
- Docker按顺序在Dockerfile中运行指令
- 第一个指令必须是“FROM”,以便指定要从中构建的基本映像
- 格式(Format)
-
环境替代(Environment replacement)
- Environment变量(使用ENV语句声明)也可以在某些指令中用作Dockerfile要解释的变量
- Dockerfile中使用
$variable_name
或${variable_name}
标注环境变量 ${variable_name)
语法还支持一些标准的bash修饰符${variable:-word}
如果variable有值,那么使用variable的值,如果没有就使用word字符串作为值${variable:+word}
如果variable有值,那么使用word字符串作为值,如果没有设置就是variable值,即空值。
Dockerfile的指令
-
FROM 指令
- FROM指令是最重要的一个且必须为Dockerfile文件开篇的第一个非注释行,用于为映像文件构建过程指定基准镜像,后续的指令运行与此基准镜像所提供的运行环境
- 实践中,基准镜像可以是任何可用镜像文件,默认情况下,
docker build
会在docker主机上查找指定的镜像文件,在其不存在时,则会从Docker Hub Registry上拉取所需的镜像文件- 如果找不到指定的镜像文件,docker build会返回一个错误信息
- 语法:
FROM <repository>[:<tag>]
或<FROM <resository>@<digest>
<reposotiry>
:指定作为base image的名称<tag>
:buse image的标签,省略时默认为latest;<digest>
buse image镜像的哈希码
# 在任意目录中创建Dockerfile文件 [root@gdy img1]# vim Dockerfile
-
MAINTANIER 指令(depreacted,作者信息)
- 用于让Dockerfile制作者提供本人的详细信息
- Dockerfile 并不限制MAINTAINER指令可能出现的位置,但推荐将其放置于FROM指令之后
- 语法:
MAINTAINER <authtor's detail>
<authtor's detail>
可以是任何文本信息,单通常会使用作者名称及邮件地址- 示例:
MAINTAINER "xdd <xdd@xdd.com>"
- 示例:
-
LABEL 指令(docker1.7后的语法)指定元数据
- 语法:
LABEL <key>=<value> <key>=<value> <key>=<value> ...
- 语法:
-
COPY 指令
-
用于从Docker主机复制文件至创建的新映像文件
-
语法
COPY <src> ... <dest>
或COPY ["<src>",..."<dest>"]
<src>
:要复制的源文件或目录,支持使用通配符<dest>
:目标路径,即正在创建的image的文件系统路径;建议为<dest>
使用绝对路径,否则,COPY指定则以WORKDIR
为其实路径;
-