【Docker】Dockerfile 构建文件

简介: 【1月更文挑战第26天】【Docker】Dockerfile 构建文件

Dockerfile 是用于构建 Docker 镜像的文本文件,其中包含一系列的指令和参数,用于描述镜像的构建步骤和配置。通过 Dockerfile,您可以定义镜像中的操作系统、应用程序、依赖库等内容,以及如何配置和运行这些组件。

Dockerfile 可以认为是Docker镜像的描述文件,是由一系列命令和参数构成的脚本。主要作用是用来构建docker镜像的构建文件。

通过Dockerfile 文件构建一个属于自己的镜像。

从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段,

  • Dockerfile是软件的原材料
  • Docker镜像是软件的交付品
  • Docker容器则可以认为是软件镜像的运行态,也即依照镜像运行的容器实例

Dockerfile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可,合力充当Docker体系的基石。

Dockerfile,需要定义一个Dockerfile,Dockerfile定义了进程需要的一切东西。Dockerfile涉及的内容包括执行代码或者是文件、环境变量、依赖包、运行时环境、动态链接库、操作系统的发行版、服务进程和内核进程(当应用进程需要和系统服务和内核进程打交道,这时需要考虑如何设计namespace的权限控制)等等;

Docker镜像,在用Dockerfile定义一个文件之后,docker build时会产生一个Docker镜像,当运行 Docker镜像时会真正开始提供服务;

Docker容器,容器是直接提供服务的。

Dockerfile 构建命令:

docker build -t 镜像名:版本号 .Dockerfile文件所在位置

Dockerfile 构建镜像流程:

Dockerfile的构建核心三个步骤:

  1. 编写Dockerfile文件
  2. docker build命令构建镜像
  3. docker run依镜像运行容器实例

Dockerfile内容基础知识:

  • 每条保留字指令都必须为大写字母且后面要跟随至少一个参数
  • 指令按照从上到下,顺序执行
  • #表示注释
  • 每条指令都会创建一个新的镜像层并对镜像进行提交

Docker执行Dockerfile的大致流程:

  • docker从基础镜像运行一个容器
  • 执行一条指令并对容器作出修改
  • 执行类似docker commit的操作提交一个新的镜像层
  • docker再基于刚提交的镜像运行一个新容器
  • 执行dockerfile中的下一条指令直到所有指令都执行完成


简单示例:

# 使用官方的基础镜像

FROM ubuntu:20.04

# 设置工作目录

WORKDIR /app

# 复制当前目录下的所有文件到工作目录

COPY . .

# 安装应用程序的依赖

RUN apt-get update && \

   apt-get install -y python3 && \

   apt-get clean && \

   rm -rf /var/lib/apt/lists/*

# 设置环境变量

ENV LANG C.UTF-8

# 定义容器启动时执行的命令

CMD ["python3", "app.py"]


这个 Dockerfile 的作用是构建一个基于 Ubuntu 20.04 的镜像,安装 Python3,并运行一个名为 app.py 的应用程序。


Docker 用户可以使用 docker build 命令根据 Dockerfile 构建镜像,例如:

docker build -t my-python-app .

上述命令会在当前目录下查找 Dockerfile,并构建一个名为 my-python-app 的镜像。随后,可以使用 docker run 命令运行该镜像作为容器。

docker run -it my-python-app

这是一个简单的示例,实际的 Dockerfile 可以更加复杂,根据应用程序的需求进行定制。它是使用 Docker 构建和部署容器化应用的核心配置文

相关文章
|
9月前
|
人工智能 前端开发 Docker
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
在 AI 智能体开发中,开发者常面临本地调试与云端部署的矛盾。本文介绍如何通过 Docker Compose 与 Docker Offload 解决这一难题,实现从本地快速迭代到云端高效扩容的全流程。内容涵盖多服务协同、容器化配置、GPU 支持及实战案例,助你构建高效、一致的 AI 智能体开发环境。
865 2
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
|
9月前
|
JavaScript Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
559 100
|
9月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
549 99
|
9月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建
|
9月前
|
安全 Go Docker
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
|
Docker 容器 Perl
云效flow构建docker镜像更换apt源为阿里镜像源
在 Dockerfile 中添加命令以更换 Debian 源为阿里云镜像,加速容器内软件包下载。核心命令通过 `sed` 实现源地址替换,并更新 apt 软件源。其中 `cat` 命令用于验证替换是否成功,实际使用中可删除该行。
3057 32
|
9月前
|
Java Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
376 8
|
监控 Java Go
无感改造,完美监控:Docker 多阶段构建 Go 应用无侵入观测
本文将介绍一种基于 Docker 多阶段构建的无侵入 Golang 应用观测方法,通过此方法用户无需对 Golang 应用源代码或者编译指令做任何改造,即可零成本为 Golang 应用注入可观测能力。
600 85
|
网络协议 NoSQL Redis
Docker Compose--模板文件
Docker Compose--模板文件
1356 29