【Docker】Dockerfile

1、简介

1.1定义

  • Dockerfile 是一个文本文件,它包含了构建 Docker 镜像所需的所有命令和配置。
  • 通过 Dockerfile,可以定义如何从一个基础镜像开始,添加文件、配置环境、安装软件包、运行命令等,最终生成一个新的 Docker 镜像。

1.2体系结构

  • FROM 基础镜像,当前新镜像是基于哪个镜像的

  • MAINTAINER 镜像维护者的姓名和邮箱地址

  • RUN 容器构建时需要运行的命令

  • EXPOSE 当前容器对外暴露的端口

  • WORKDIR 指定在创建容器后,终端默认登陆进来的工作目录

  • ENV 用来在构建镜像过程中设置环境变量

  • ADD 将宿主机目录下的文件拷贝进镜像并且ADD命令会自动处理URL和解压tar包

  • COPY 类似ADD,拷贝文件和目录到镜像中 ,语法COPY src dest COPY [''src","dest"]

  • VOLUME 容器数据卷,用于数据保存和持久化工作,VOLUMN不能指定挂载位置

  • CMD 指定一个容器启动时要运行的命令格式 shell: CMD <命令> exec CMD ['可执行文件',"参数1","参数2"]

  • DockerFile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换

  • ENTEYPOINT 指定一个容器启动时要运行的命令 ENTRYPOINT的目地和CMD一样,都是在指定容器启动程序及参数

  • ONBUILD 当构建一个被继承的Dockerfile时运行命令,父镜像在被子镜像继承后触发父镜像的onbuild

2、使用

2.1常见命令

  1. 基础镜像指定FROM: 用于指定基础镜像,通常是Dockerfile中的第一个命令。例如:FROM ubuntu:latest
  2. 环境变量设置ENV: 用于设置环境变量。例如:ENV PATH /usr/local/nginx/bin:$PATH
  3. 文件复制
    • COPY: 用于从构建上下文复制文件或目录到镜像中。例如:COPY ./package.json /app/
    • ADD: 功能类似于COPY,但还支持从URL下载文件或自动解压tar包。
  4. 工作目录设置WORKDIR: 用于设置容器内部的工作目录。例如:WORKDIR /app
  5. 包管理RUN: 用于执行任何命令,并生成一个新的镜像层。常用于安装软件包,如:RUN apt-get update && apt-get install -y nginx
  6. 容器启动命令
    • CMD: 用于指定容器启动时执行的命令。如果docker run指定了命令,CMD命令会被忽略。例如:CMD ["nginx", "-g", "daemon off;"]
    • ENTRYPOINT: 类似于CMD,但ENTRYPOINT不会被docker run指定的命令覆盖,而是将docker run指定的命令作为ENTRYPOINT的参数。
  7. 端口暴露EXPOSE: 用于声明容器运行时监听的端口,但并不会自动映射到宿主机的端口。例如:EXPOSE 80 443
  8. 用户设置USER: 用于设置运行容器的用户。例如:USER nginx
  9. 卷设置VOLUME: 用于定义匿名卷,方便数据持久化。例如:VOLUME ["/data"]
  10. 其他指令
    • LABEL: 用于为镜像添加元数据。
    • ARG: 用于定义构建时变量,可以在构建过程中使用。
    • ONBUILD: 用于定义触发器,当基于当前镜像构建其他镜像时触发。
    • HEALTHCHECK: 用于指定健康检查命令,判断容器是否健康运行。

2.2Dockerfile编写大致流程

  • docker从基础镜像运行一个容器

  • 执行一条指令并对容器进行修改

  • 执行类似于docker commit的操作提交一个新的镜像

  • docker再基于刚提交的新的镜像运行一个新的容器

  • 执行dockerfile的下一个指令再从第2点开始直到没有指令。

  • 45
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值