Files
nexus/wiki/concepts/Docker-Image.md
2026-04-21 16:03:27 +08:00

140 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Docker Image
type: concept
tags: [docker, container, virtualization]
last_updated: 2026-04-21
---
# Docker Image
## Definition
Docker Image镜像是一个轻量级、可执行的独立软件包包含运行某个软件所需的所有内容代码、运行时、系统工具、系统库和设置。镜像是 Docker 容器的基础模板。
## 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-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 支持不同平台
- 定期清理未使用镜像可释放存储空间