DockerFile中有那些常见的指令?
参考答案:
Dockerfile是一个文本文件,其中包含了一系列的指令(Instruction)和参数(Argument),用于定义Docker镜像。以下是Dockerfile中一些常见的指令:
- FROM:指定基础镜像,后续指令都将基于这个基础镜像进行构建。
FROM ubuntu:latest
- MAINTAINER(已弃用,建议使用LABEL):设置镜像的维护者信息。现在推荐使用LABEL指令来设置元数据。
LABEL maintainer="your_name@your_email.com"
- RUN:在镜像构建过程中执行命令,并生成新的镜像层。
RUN apt-get update && apt-get install -y some-package
- CMD:设置容器启动时要执行的命令。如果Dockerfile中有多个CMD指令,只有最后一个会生效。
CMD ["executable","param1","param2"]
- ENTRYPOINT:配置容器启动时运行的命令。与CMD不同,ENTRYPOINT不会被docker run命令行参数中指定的指令所覆盖,而是将这些参数当作参数运行。
ENTRYPOINT ["executable","param1","param2"]
- EXPOSE:声明容器运行时要监听的端口。
EXPOSE 8080
- ENV:设置环境变量。
ENV KEY value
- ADD:将本地文件或目录添加到容器中,并可以自动解压tar压缩包。
ADD hom*.txt /mydir/
- COPY:与ADD类似,但COPY仅支持从构建上下文复制文件或目录到容器中。
COPY src/somefile.txt /dest/
- VOLUME:创建挂载点,用于在容器运行时动态挂载宿主机目录或其他容器目录。
VOLUME ["/data"]
- USER:设置运行容器时的用户名或UID。
USER username
- WORKDIR:为后续的RUN、CMD、ENTRYPOINT、COPY和ADD指令设置工作目录。
WORKDIR /path/to/workdir
- ARG:定义构建时变量,这些变量仅在构建镜像时有效。
ARG buildno
ARG password
- ONBUILD:当其他镜像以当前镜像为基础进行构建时,执行指定的指令。
ONBUILD ADD . /app/src
- STOPSIGNAL:设置容器停止时发送的信号。
STOPSIGNAL SIGTERM
- HEALTHCHECK:配置健康检查,用于判断容器是否正常运行。
HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ || exit 1
- SHELL:用于设置RUN、CMD和ENTRYPOINT指令的默认shell。
SHELL ["/bin/bash", "-c"]
这些指令是Dockerfile中最常见的,但Docker还提供了其他一些指令和高级功能,你可以根据具体的构建需求选择使用。同时,建议查阅Docker官方文档以获取最新的指令和用法说明。