【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 构建和部署容器化应用的核心配置文

相关文章
|
10天前
|
关系型数据库 MySQL 应用服务中间件
[Docker]容器内文件修改
【8月更文挑战第21天】[Docker]容器内文件修改
35 13
|
2天前
|
Docker 容器
docker 中文件和外部文件映射
docker 中文件和外部文件映射
|
2天前
|
前端开发 应用服务中间件 nginx
[译] 面向 React 和 Nginx 的 Docker 多阶段构建
[译] 面向 React 和 Nginx 的 Docker 多阶段构建
[译] 面向 React 和 Nginx 的 Docker 多阶段构建
|
4天前
|
Java Docker Python
启动docker服务需要的三个重要文件
这篇文章介绍了启动Docker服务所需的三个重要文件:Dockerfile、build_image.sh和run.sh。文章提供了Java和Python两个版本的Dockerfile示例,并解释了每个阶段的作用,如基础镜像的选择、构建环境的设置、以及如何通过参数传递环境变量。build_image.sh脚本用于执行Docker镜像的构建、标记和推送过程,而run.sh脚本则用于执行具体的运行命令,包括设置Java参数和执行jar文件。 文章还强调了这些文件应由项目负责人维护,并根据项目需求自行修改启动命令参数。
11 2
|
5天前
|
存储 Docker 容器
|
12天前
|
Docker 容器
在Docker中,如何批量清理临时镜像文件?
在Docker中,如何批量清理临时镜像文件?
|
12天前
|
Docker 容器
在Docker中,Dockerfile有哪些常见指令?
在Docker中,Dockerfile有哪些常见指令?
|
12天前
|
缓存 运维 安全
在Docker中,构建镜像应该遵循哪些原则?
在Docker中,构建镜像应该遵循哪些原则?
|
12天前
|
缓存 Docker 容器
在Docker中,docker commit生成的镜像和dockerfile生成镜像有什么区别?
在Docker中,docker commit生成的镜像和dockerfile生成镜像有什么区别?
下一篇
云函数