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

简介: 在Docker中,Dockerfile有哪些常见指令?

Dockerfile中的常见指令及其用法如下:

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

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

相关文章
|
23天前
|
应用服务中间件 PHP nginx
Docker-compose 编排lnmp(dockerfile) 完成Wordpress
通过使用Docker Compose,我们可以轻松编排LNMP环境并部署WordPress。本文详细介绍了各组件的Dockerfile和配置文件编写,并通过docker-compose.yml文件实现了整个环境的自动化部署。这种方法不仅简化了部署过程,还提高了环境的可移植性和一致性。希望本文能帮助你更好地理解和使用Docker Compose来管理和部署复杂的应用程序。
61 3
|
6月前
|
Ubuntu C++ Docker
Docker的基本指令和HTML/PYTHON/C++的简单创建示例
Docker的基本指令和HTML/PYTHON/C++的简单创建示例
|
2月前
|
Docker 容器
docker中使用Dockerfile自动创建数据卷
【10月更文挑战第12天】
20 5
|
2月前
|
消息中间件 NoSQL Kafka
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
49 4
|
3月前
|
应用服务中间件 nginx Docker
Docker镜像-基于DockerFile制作编译版nginx镜像
这篇文章介绍了如何基于Dockerfile制作一个编译版的nginx镜像,并提供了详细的步骤和命令。
482 17
Docker镜像-基于DockerFile制作编译版nginx镜像
|
3月前
|
应用服务中间件 Linux nginx
Docker镜像-基于DockerFile制作yum版nginx镜像
本文介绍了如何使用Dockerfile制作一个基于CentOS 7.6.1810的yum版nginx镜像,并提供了详细的步骤和命令。
147 20
|
3月前
|
Docker 容器
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思
|
4月前
|
监控 Linux API
在Docker中,docker run指令执行后,生成了哪些进程?
在Docker中,docker run指令执行后,生成了哪些进程?
|
4月前
|
缓存 Docker 容器
在Docker中,docker commit生成的镜像和dockerfile生成镜像有什么区别?
在Docker中,docker commit生成的镜像和dockerfile生成镜像有什么区别?
|
4月前
|
缓存 开发者 Docker
Dockerfile是Docker容器化过程中的核心组件,它允许开发者以一种可重复、可移植的方式自动化地构建Docker镜像
【8月更文挑战第19天】Dockerfile是构建Docker镜像的脚本文件,含一系列指令定义镜像构建步骤。每条大写指令后跟至少一个参数,按序执行,每执行一条指令即生成新的镜像层。常用指令包括:FROM指定基础镜像;RUN执行构建命令;EXPOSE开放端口;CMD指定容器启动行为等。优化策略涉及减少镜像层数、选择轻量基础镜像、利用缓存及清理冗余文件。示例:基于Python应用的Dockerfile包括设置工作目录、复制文件、安装依赖等步骤。掌握Dockerfile有助于高效自动化构建镜像,加速应用部署。
36 1