Auto-sync: 2026-04-21 16:03
This commit is contained in:
@@ -1,33 +1,139 @@
|
||||
---
|
||||
title: "Docker Image"
|
||||
title: Docker Image
|
||||
type: concept
|
||||
tags: [docker, container, image]
|
||||
sources: [docker-images-transfer-guide, 如何传输Docker-images-并且在另一个Docker安装]
|
||||
last_updated: 2026-04-17
|
||||
tags: [docker, container, virtualization]
|
||||
last_updated: 2026-04-21
|
||||
---
|
||||
|
||||
## Summary
|
||||
Docker Image(Docker 镜像)是容器化平台的核心概念,是一个只读模板,包含应用程序及其运行时所需的全部依赖(代码、运行时、库、环境变量、配置文件等)。
|
||||
# Docker Image
|
||||
|
||||
## Definition
|
||||
用于创建 Docker 容器的只读模板,通过分层存储实现高效复用和传输。
|
||||
|
||||
## Key Attributes
|
||||
- **格式**:分层文件系统
|
||||
- **存储方式**:可导出为 tar 归档文件
|
||||
- **复用机制**:分层存储,多个镜像可共享基础层
|
||||
Docker Image(镜像)是一个轻量级、可执行的独立软件包,包含运行某个软件所需的所有内容:代码、运行时、系统工具、系统库和设置。镜像是 Docker 容器的基础模板。
|
||||
|
||||
## Use Cases
|
||||
- 应用程序打包和分发
|
||||
- 跨环境部署(开发、测试、生产)
|
||||
- 离线环境镜像迁移
|
||||
## Key Characteristics
|
||||
|
||||
### 不可变性(Immutable)
|
||||
|
||||
- 镜像一旦创建就不能修改
|
||||
- 对容器的修改只存在于容器层
|
||||
- 新修改通过创建新镜像实现
|
||||
|
||||
### 分层结构(Layered)
|
||||
|
||||
- 由多个只读层组成
|
||||
- 层可以复用,多个镜像共享基础层
|
||||
- 节省存储空间和传输带宽
|
||||
|
||||
### 可堆叠性(Stackable)
|
||||
|
||||
- 基于已有镜像构建新镜像
|
||||
- 使用 Dockerfile 描述构建过程
|
||||
- 每条指令创建新层
|
||||
|
||||
## Image 结构
|
||||
|
||||
```
|
||||
Dockerfile
|
||||
↓
|
||||
Image = [Layer 3: Application Code]
|
||||
[Layer 2: Dependencies]
|
||||
[Layer 1: Base OS]
|
||||
[Layer 0: BootFS]
|
||||
```
|
||||
|
||||
## Common Operations
|
||||
|
||||
### 查看镜像
|
||||
|
||||
```bash
|
||||
docker images
|
||||
docker image ls
|
||||
```
|
||||
|
||||
### 拉取镜像
|
||||
|
||||
```bash
|
||||
docker pull nginx:latest
|
||||
docker pull ubuntu:22.04
|
||||
```
|
||||
|
||||
### 删除镜像
|
||||
|
||||
```bash
|
||||
docker rmi nginx:latest
|
||||
docker image prune -a # 删除所有未使用镜像
|
||||
```
|
||||
|
||||
### 标签管理
|
||||
|
||||
```bash
|
||||
docker tag nginx:latest myregistry/nginx:v1.0
|
||||
```
|
||||
|
||||
## Image vs Container
|
||||
|
||||
| 特性 | Image | Container |
|
||||
|------|-------|-----------|
|
||||
| 状态 | 只读模板 | 可读写实例 |
|
||||
| 生命周期 | 持久 | 临时 |
|
||||
| 数量 | 可复用 | 可多实例 |
|
||||
| 修改 | 不可变 | 写入容器层 |
|
||||
|
||||
## Image Transfer
|
||||
|
||||
Docker 镜像可以在不同主机之间传输,常见方法:
|
||||
|
||||
### docker save/load(推荐)
|
||||
|
||||
```bash
|
||||
# 导出
|
||||
docker save -o image.tar nginx:latest
|
||||
|
||||
# 导入
|
||||
docker load < image.tar
|
||||
```
|
||||
|
||||
### docker export/import
|
||||
|
||||
```bash
|
||||
# 导出容器
|
||||
docker export -o container.tar container_id
|
||||
|
||||
# 导入为镜像
|
||||
docker import container.tar new_image:latest
|
||||
```
|
||||
|
||||
### Registry(云端)
|
||||
|
||||
```bash
|
||||
# 推送
|
||||
docker push myregistry/image:tag
|
||||
|
||||
# 拉取
|
||||
docker pull myregistry/image:tag
|
||||
```
|
||||
|
||||
## Related Concepts
|
||||
- [[Docker]]:容器化平台
|
||||
- [[Docker-Save]]:镜像导出命令
|
||||
- [[Docker-Load]]:镜像导入命令
|
||||
|
||||
## Connections
|
||||
- [[Docker]] ← 包含 ← [[Docker-Image]]
|
||||
- [[Docker-Image]] ← 可导出为 ← [[Docker-Save]]
|
||||
- [[Docker-Image]] ← 可导入为 ← [[Docker-Load]]
|
||||
- [[Docker-Save]]:镜像导出方法
|
||||
- [[Docker-Load]]:镜像导入方法
|
||||
- [[Docker-Container]]:镜像的运行实例
|
||||
- [[Dockerfile]]:镜像构建文件
|
||||
|
||||
## Relationships
|
||||
|
||||
- [[Docker-Image]] ← 构建 ← [[Dockerfile]]
|
||||
- [[Docker-Image]] ← 实例化 ← [[Docker-Container]]
|
||||
- [[Docker-Image]] ← transferred_via ← [[Docker-Save]]
|
||||
- [[Docker-Image]] ← transferred_via ← [[Docker-Load]]
|
||||
|
||||
## Related Entities
|
||||
|
||||
- [[entities/Docker.md]]
|
||||
|
||||
## Notes
|
||||
|
||||
- 镜像大小取决于基础系统和应用依赖
|
||||
- 多架构镜像可通过 manifest list 支持不同平台
|
||||
- 定期清理未使用镜像可释放存储空间
|
||||
|
||||
Reference in New Issue
Block a user