Dockerfile常用指令

在 Dockerfile 中,有多个常用指令和参数可以用来定义如何构建 Docker 镜像。以下是一些最常用的 Dockerfile 指令及其参数介绍:

1. FROM:指定基础镜像

  • 功能:定义构建镜像所用的基础镜像。
  • 语法
    FROM <image>[:<tag>]
    
  • 示例
    FROM ubuntu:20.04
    

2. RUN:执行命令并创建镜像层

  • 功能:在构建镜像过程中执行命令,通常用于安装软件包、更新系统等。
  • 语法
    RUN <command>
    
  • 示例
    RUN apt-get update && apt-get install -y nginx
    

3. CMD:定义容器启动时默认执行的命令

  • 功能:指定容器启动时执行的命令及其默认参数。如果 docker run 中指定了其他命令,CMD 的命令会被覆盖。
  • 语法
    CMD ["executable", "param1", "param2"]
    CMD ["param1", "param2"]
    CMD command param1 param2
    
  • 示例
    CMD ["nginx", "-g", "daemon off;"]
    

4. ENTRYPOINT:定义容器启动时必须执行的命令

  • 功能:指定容器启动时必须执行的命令,并且不能被 docker run 中的参数覆盖。常用于设定容器的主命令。
  • 语法
    ENTRYPOINT ["executable", "param1", "param2"]
    
  • 示例
    ENTRYPOINT ["nginx"]
    

注意: RUN CMD ENTRYPOINT 三个指令容易混淆, 可以参考Dockerfile-RUN/CMD/ENTRYPOINT的区别

5. COPY:将文件或目录从宿主机复制到镜像中

  • 功能:将文件或目录从构建上下文中复制到镜像内的指定路径。
  • 语法
    COPY <src> <dest>
    
  • 示例
    COPY index.html /usr/share/nginx/html/
    

6. ADD:将文件、目录或远程文件添加到镜像中

  • 功能:类似于 COPY,但支持从 URL 下载文件以及解压归档文件。
  • 语法
    ADD <src> <dest>
    
  • 示例
    ADD https://example.com/file.tar.gz /app/
    

7. WORKDIR:设置工作目录

  • 功能:指定接下来所有命令的工作目录。如果目录不存在,会自动创建。
  • 语法
    WORKDIR /path/to/directory
    
  • 示例
    WORKDIR /app
    

8. ENV:设置环境变量

  • 功能:定义环境变量,容器在运行时可以访问这些变量。
  • 语法
    ENV <key>=<value>
    
  • 示例
    ENV APP_ENV=production
    

9. EXPOSE:声明容器监听的端口

  • 功能:指示容器在运行时监听的端口,这个信息仅用于文档化,并不会实际开放端口。
  • 语法
    EXPOSE <port> [<port>/protocol...]
    
  • 示例
    EXPOSE 80
    
  • 补充 : 若要实际开放端口, 则需要在运行容器时使用 docker run 命令的 -p选项来映射端口, 例如docker run -d -p 8080:80 my-image; 或者使用-P将容器内所有的 EXPOSE 端口随机映射到宿主机上的可用端口, 例如docker run -d -P my-image

10. VOLUME:创建挂载点

  • 功能:创建一个容器内挂载点,用于持久化数据或共享数据。
  • 语法
    VOLUME ["/data"]
    
  • 示例
    VOLUME ["/app/data"]
    
  • 补充: 如果没有在docker run 使用-v 宿主机挂载位置:容器内挂载位置, 则为匿名挂载, docker 会自动管理这个卷的挂载, 这个匿名卷通常会存储在 /var/lib/docker/volumes/ 下。

11. USER:指定用户

  • 功能:设置容器内运行命令的用户。
  • 语法
    USER <username>[:<group>]
    
  • 示例
    USER appuser
    

12. ARG:定义构建时变量

  • 功能:定义在镜像构建时使用的变量,构建时可以通过 --build-arg 传递值。
  • 语法
    ARG <name>[=<default_value>]
    
  • 示例
    ARG VERSION=1.0
    RUN echo "Version is $VERSION"
    

13. ONBUILD:定义触发构建时的指令

  • 功能:在你构建的这个镜像作为基础镜像时触发。
  • 语法
    ONBUILD <instruction>
    
  • 示例
    ONBUILD RUN echo "This runs on build of the derived image"
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值