140 lines
2.7 KiB
Markdown
140 lines
2.7 KiB
Markdown
---
|
||
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 支持不同平台
|
||
- 定期清理未使用镜像可释放存储空间
|