Dockerfile基本结构及编写详解

Dockerfile 是用于创建 Docker 镜像的文本文件,它包含了一系列的指令和参数。每条指令构建镜像的一部分,从基础镜像开始,通过一系列步骤和修改,最终创建出新的镜像。以下是 Dockerfile 的基本结构和编写指南:

基本结构

  1. FROM :指定基础镜像。每个 Dockerfile 都必须以一个 FROM 指令开始,它指定了新镜像的基础镜像。

    Dockerfile 复制代码
    FROM ubuntu:18.04
  2. RUN:执行命令。在构建镜像的过程中用于执行命令行命令。

    Dockerfile 复制代码
    RUN apt-get update && apt-get install -y python3
  3. CMD :提供容器默认执行的命令。如果 Docker 运行时没有指定其他命令,那么会执行 CMD 指定的命令。

    Dockerfile 复制代码
    CMD ["python3", "-m", "http.server"]
  4. EXPOSE:声明容器运行时监听的端口。

    Dockerfile 复制代码
    EXPOSE 8000
  5. ENV:设置环境变量。

    Dockerfile 复制代码
    ENV MY_VAR=my_value
  6. COPYADD:将文件从构建上下文复制到镜像中。

    Dockerfile 复制代码
    COPY . /app
  7. ENTRYPOINT:配置容器启动时运行的命令。

    Dockerfile 复制代码
    ENTRYPOINT ["python3"]
  8. WORKDIR:设置工作目录。

    Dockerfile 复制代码
    WORKDIR /app
  9. VOLUME:创建挂载点。

    Dockerfile 复制代码
    VOLUME /myvol
  10. USER:指定运行容器时的用户名或 UID。

    Dockerfile 复制代码
    USER myuser

编写指南

  • 可读性和维护性:编写清晰、注释良好的 Dockerfile,方便维护和理解。
  • 多步骤构建:优化构建步骤,合并相关命令,减少镜像层的数量。
  • 清理:在构建过程中清理不必要的文件,减少镜像大小。
  • 使用官方基础镜像:尽可能使用官方提供的基础镜像,保证安全和可靠。
  • 避免安全隐患:不要在 Dockerfile 中暴露敏感信息,如密码或私钥。

通过遵循这些指南,你可以创建高效、安全且易于维护的 Docker 镜像。

相关推荐
猿与禅15 天前
devops-Dockerfile+Jenkinsfile方式部署Java前后端应用
java·运维·jenkins·devops·jenkinsfile·dockerfile
老司机张师傅1 个月前
【微服务实战之Docker容器】第七章-Dockerfile解析
容器·dockerfile·虚悬镜像·docker学习
Ops菜鸟(Xu JieHao)1 个月前
Dockerfile构建镜像(练习一Apache镜像)(5-1)
服务器·docker·容器·apache·脚本·dockerfile·系统运维
强哥之神2 个月前
如何构建一个支持GPU的Llamafile容器
人工智能·机器学习·语言模型·gpu·dockerfile·1024程序员节·llamafile
强哥之神2 个月前
Dockerfile最佳实践:如何创建高效的容器
人工智能·docker·语言模型·k8s·dockerfile·docker镜像·镜像制作
XMYX-02 个月前
深入浅出Dockerfile编写指南
dockerfile
丁总学Java3 个月前
使用dockerfile来构建一个包含Jdk17的centos7镜像(构建镜像:centos7-jdk17)
dockerfile
SilentCodeY3 个月前
docker build前耗时太长,不明所以
运维·docker·容器·镜像·dockerfile
丁总学Java3 个月前
dockerfile部署springboot项目(构建镜像:ebuy-docker:v1.0)
java·spring boot·后端·dockerfile
瞭望清晨4 个月前
Docker容器创建时,无法访问镜像源:Could not connect to archive.ubuntu.com:80
ubuntu·docker·容器·镜像源·dockerfile