什么是Dockerfile
Dockerfile 是一个用来自动化构建镜像的文本文件,里面包含了许多构建镜像的指令。
Dockerfile 的格式
- Dockerfile 由指令和注释构成
- 添加 # 表示本行为注释,构建镜像时会自动忽略,有一个例外是解析器指令 # directive=value
- 注释或命令行前的空格会被忽略
- 关键字不区分大小写,但推荐大写,以区分参数
# 这是注释
FROM centos
RUN echo "hello world"
以下命令等同于上边的
# 这是加空格的注释
FROM centos
# 这是加空格的命令
RUN echo "hello world"
- 解析器指令
正确设置后,可以使用其它特殊的指令,目前仅支持:syntax 和 escape,开启解析器指令有几个注意事项:
- 指令 # directive=value 需要写在 dockerfile 文件开头,不然会被当成普通注释
- 只能写入一次,多次会无法生效
- 空格不会对解析器指令产生影响
- 不区分大小写,但推荐小写
- 环境变量
可以通过设置环境变量,在命令行执行时解析,变量可以是任何字符串,也可以再次赋值变量
ENV path=/usr/share
ENV real_path=$path
.dockerignore 文件
该文件用来编写镜像打包时的文件忽略规则,由注释和文件匹配规则构成,类似 Git 的忽略文件
# 这是一个注释
*/temp*
*/*/temp*
!/temp/logo
temp?
Dockerfile 指令
# This is a demo
ARG CODE_VERSION=20.04
FROM ubuntu:${CODE_VERSION}
LABEL version="1.0" \
description="测试镜像" \
org.opencontainers.image.authors="phpworkerman"
EXPOSE 8081/tcp
ENV DIRPATH=/etc
WORKDIR $DIRPATH
RUN pwd
ADD test.conf .
CMD ["bash"]
ENTRYPOINT["ls"]
执行 Dockerfile 文件进行镜像打包
docker build -f /var/www/dockerfile -t phpworkerman/ubuntu:1.0 .