CodeGym /课程 /Docker SELF /了解 Docker Images

了解 Docker Images

Docker SELF
第 13 级 , 课程 0
可用

1.1 Docker Images 基础

Docker Images (Docker 镜像) 是用于 Docker 容器的模板。它们包含运行应用所需的所有内容:代码、库、依赖项、工具和配置文件。理解什么是 Docker Images 以及它们是如何构成的,对高效使用 Docker 是很重要的。

Docker Image 是一个 不可变的 模板,用于创建容器。它包含所有必要的组件,以便在隔离环境中运行应用。当你启动容器时,Docker 会从镜像生成一个实例并运行它。

Docker Images 的关键特性:

  1. 不可变性: Docker 镜像是不可变的。容器中的任何更改都不会影响原始镜像。要更改镜像的内容,必须创建新的镜像。
  2. 分层结构: Docker Images 是由多层组成的。每一层表示对前一层的更改。这使得可以高效利用存储空间,通过复用现有层。
  3. 标识: 每个镜像都有一个唯一的标识符 (SHA256 哈希),并且可以有一个或多个标签来简化版本管理。

Docker Images 的结构:

Docker Images 具有分层结构,每一层都是一个文件系统。这些层存储在 Docker 的缓存中,可以被其他镜像重复使用。分层结构使得 Docker 镜像轻量且高效。例如,第一层是操作系统,第二层是 Python,第三层是你的应用程序。

Docker Images 结构的主要组件:

  1. 基础层 (Base Layer): 镜像的起始层,通常用于创建其他镜像的基础。例如,可以是一个精简的操作系统版本,比如 Ubuntu 或 Alpine Linux。
  2. 中间层 (Intermediate Layers): 这些层是根据 Dockerfile 中的命令 (例如安装软件包、复制文件等) 创建的。每一层都对前一层进行了更改。
  3. 最终层 (Final Layer): 根据 CMD,ENTRYPOINT 指令或容器内部的更改创建的最后一层被称为 "容器层"。此层是临时的,仅在容器运行时存在。

1.2 Docker Images 的层是怎么工作的

Docker 镜像中的每一层是基于前一层的更改。当 Docker 创建镜像时,它执行 Dockerfile 文件中的每条指令,并为每次更改添加一个新层。

创建层的示例:

  1. 基础镜像: 从一个基础镜像开始,比如 ubuntu:20.04。这将是第一层。
  2. 安装软件包: 使用命令 RUN apt-get update && apt-get install -y python3 将创建一个新层,其中已安装 Python。
  3. 复制文件: 使用命令 COPY . /app 将应用程序文件添加到新层。
  4. 设置工作目录: 使用命令 WORKDIR /app 将创建一个新层设置后续命令的工作目录。

使用层的好处:

  1. 重用: 层可以被其他镜像重复使用。例如,如果两个镜像使用相同的基础层,Docker 只需加载一次,从而节省空间和时间。
  2. 缓存: Docker 会缓存层,从而加快构建镜像的速度。如果层没有更改,Docker 将从缓存中使用,而不是重新构建。
  3. 模块化: 分层结构允许以模块化的方式开发镜像。您可以更新或更改单个层,而不影响整个镜像。

Docker Images 的标识和标签:

每个 Docker Image 都有一个使用其内容及所有层生成的唯一哈希值(SHA256)来标识。为了方便管理和版本控制,Docker Images 也可以使用标签。

镜像标识的示例:

以下命令将显示系统上所有镜像的列表,包括它们的仓库、标签、标识符和大小:

Terminal

docker images

1.3 使用 Docker Images

Docker 提供了很多命令来操作镜像。以下是主要命令:

  • 创建镜像: docker build
  • 从镜像启动容器: docker run
  • 列出镜像: docker images
  • 删除镜像: docker rmi
  • 在 Docker Hub 上搜索镜像: docker search
  • 从 Docker Hub 下载镜像: docker pull
  • 上传镜像到 Docker Hub: docker push

创建和使用 Docker 镜像的示例:

1. 创建 Dockerfile:

dockerfile

# 使用基础镜像 Ubuntu
FROM ubuntu:20.04

# 安装 Python
RUN apt-get update && apt-get install -y python3

# 将应用程序文件复制到容器中
COPY . /app

# 设置工作目录
WORKDIR /app

# 指定启动应用程序的命令
CMD ["python3", "app.py"]

2. 构建镜像:

使用以下命令,根据当前目录中的 Dockerfile 创建名为 my_python_app 的镜像:

Terminal

docker build -t my_python_app .

3. 从镜像启动容器:

使用以下命令,从创建的镜像 my_python_app 启动一个后台运行的容器:

Terminal

docker run -d my_python_app
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION