在Docker中,Dockerfile的常用指令有哪些?

1、FROM
FROM <image>
  • 说明:定义构建镜像的基础镜像
  • 用法:指定一个现有镜像作为新建镜像的父镜像,所有后续操作都在这个基础上进行。
2、RUN
RUN <command> (shell form) 或
RUN ["executable", "param1", "param2"] (exec form)
  • 说明:在构建镜像时运行命令。
  • 用法:用于安装软件包、设置环境变量、执行脚本等操作,每条RUN命令都会产生一个新的镜像层。
  • 示例
RUN apt-get update && apt-get install -y package_name
3、CMD
CMD ["executable", "param1", "param2"]
  • 说明:指定容器启动后的默认命令
  • 用法:每个Dockerfile只能有一个CMD指令,但可以被docker run命令后面跟随的命令参数所覆盖
  • 示例
CMD ["python", "app.py"]
4、ENTRYPOINT
ENTRYPOINT ["executable", "param1", "param2"]
  • 说明:定义容器启动时执行的可执行程序和参数。
  • 用法:类似于CMD,但ENTRYPOINT不会被docker run后面的命令行参数覆盖,而是作为容器启动时固定的入口点。当同时存在CMD和ENTRYPOINT时,CMD参数会作为ENTRYPOINT的额外参数
  • 示例
ENTRYPOINT ["java", "-jar", "/app.jar"]
5、COPY
COPY <src>... <dest>
  • 说明:将构建上下文目录下的文件或目录复制到镜像内部指定路径
  • 用法:用于将宿主机的文件复制到容器中
  • 示例
COPY ./app /opt/myapp
6、ADD
ADD <src>... <dest>
  • 说明:类似于COPY,但ADD还支持从URL获取文件并自动解压缩tar文件。
  • 用法:用于将文件或目录从构建上下文或URL复制到镜像中,如果源文件是tar文件,还会自动解压。
  • 示例
ADD http://example.com/package.tar.xz /usr/src/myapp/
7、WORKDIR
WORKDIR /path/to/workdir
  • 说明:设置构建和运行时的工作目录。
  • 用法:后续的RUN、CMD、COPY、ADD等指令将在此目录下执行。
  • 示例
WORKDIR /app
8、ENV
ENV key value
  • 说明:设置环境变量。
  • 用法:定义的环境变量在构建镜像时和容器运行时均可使用。
  • 示例
ENV APP_VERSION 1.0
9、ARG
ARG name[=default-value]
  • 说明:定义构建时的变量,可以在构建过程中通过–build-arg参数传递。
  • 用法:构建时动态传入变量值,方便根据不同环境构建不同的镜像。
  • 示例
ARG BUILD_DATE
10、EXPOSE
EXPOSE <port> [<port>/tcp|udp> ...]
  • 说明:声明容器打算监听的端口,但并不实际开放端口。
  • 用法:告诉使用者该容器需要映射哪些端口到宿主机。
  • 示例
EXPOSE 8080
11、VOLUME
VOLUME ["/data"]
  • 说明:创建匿名数据卷,用于持久化数据。
  • 用法:指定容器内的目录作为数据卷,数据在容器销毁后得以保存。
  • 示例
VOLUME ["/var/log/myapp"]
12、USER
USER user[:group]
  • 说明:指定运行容器时使用的用户和用户组。
  • 用法:改变后续指令和容器运行时的用户身份。
  • 示例
USER appuser
13、HEALTHCHECK
HEALTHCHECK --interval=5m --timeout=3s \
        CMD curl --fail http://localhost/health || exit 1
  • 说明:定义检查容器健康状况的命令。
  • 用法:用于监测容器的服务是否正常运行。
其他较不常用的指令还包括但不限于:
STOPSIGNAL
定义容器接收到什么信号时应当停止。

ONBUILD
规定在基于当前镜像构建子镜像时,执行的一些预设命令。

LABEL
用于给镜像添加元数据标签。

综上所述,每个指令的具体使用还需要根据实际需求进行适当调整和组合,以构建出满足特定功能和要求的Docker镜像。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值