dockerfile是什么?
Dockerfile 是由一系列指令和参数构成的脚本,一个 Dockerfile 里面包含了构建整个镜像的完整命令。通过 docker build 执行 Dockerfile 中的一系列指令自动构建镜像。
常用指令
- FROM:基础镜像,FROM 命令必须是 Dockerfile的首个命令
- LABEL:为镜像生成元数据标签信息
- USER:指定运行容器时的用户名或 UID,后续 RUN 也会使用指定用户。
- RUN:RUN 是Dockerfile 行的核心部分。它接受作为参数并用于创建镜像。每条 RUN 在当前基础像上执行,并且会提交一个新镜像层
- WORKDIR:设置 CMD 指明的命今的运行目录。为后续的 RUN、CMD、ENTRYPOINT、ADD 指配置工作目录
- ENV:容器启动的环境变量
- ARG:构建环境的环境变量-dockerfile使用
- COPY:复制文件
- CMD: 容器运行时执行的默认命令,容易被覆盖,可以用ENTRYPOINT
- ENTRYPOINT:指定容器的”入口”
- HEALTHCHECK: 容器健康状态检查
示例:
#可指定版本,也可不指定,不指定为latest
FROM nginx
#设置标签,创作者信息等
LABEL maintainer="test.com"
#设置环境变量
ENV nginx_version latest
ARG work_pwd=/tmp/dockertest
#执行命令
RUN apt-get -yq update && apt-get install -y curl && \
ln -sf /dev/stdout /var/log/nginx/access.log && \
ln -sf /dev/stderr /var/log/nginx/error.log
# 挂载卷
VOLUME ["/data"]
#设置工作目录
WORKDIR $work_pwd
#设置容器运行时的监听端口
EXPOSE 8088
#此处 CMD 作为 ENTRYPOINT 的参数
CMD ["nginx","-g","daemon off;"]
STOPSIGNAL SIGRTMAX
HEALTHCHECK --interval=5s --timeout=3s CMD curl -fs http://localhost/ || exit 1