130 lines
2.9 KiB
Markdown
130 lines
2.9 KiB
Markdown
---
|
||
title: 如何传输 Docker images 并且在另一个 Docker 安装
|
||
source:
|
||
author: shenwei
|
||
published:
|
||
created: 2025-03-06
|
||
description: 从工作笔记本将 Docker 镜像传输到 Synology NAS Docker 的完整操作流程
|
||
tags: [docker, nas, synology, home-office]
|
||
---
|
||
|
||
# 如何传输 Docker images 并且在另一个 Docker 安装
|
||
|
||
## Source File
|
||
- [[raw/Home Office/如何传输Docker images 并且在另一个Docker安装.md]]
|
||
|
||
## Summary
|
||
|
||
Docker 镜像在不同主机之间的离线传输方法,使用 `docker save` 和 `docker load` 命令实现无需 registry 的镜像迁移。典型场景:将工作笔记本上的 Docker 镜像传输到 Synology NAS 的 Docker 环境。
|
||
|
||
## Core Commands
|
||
|
||
### 导出镜像(源设备)
|
||
|
||
```bash
|
||
# 拉取镜像(如需要)
|
||
docker pull image_name:tag
|
||
|
||
# 打包镜像为 tar 文件
|
||
docker save -o images.tar image_name:tag
|
||
|
||
# 或打包多个镜像
|
||
docker save -o images.tar image1:tag image2:tag
|
||
```
|
||
|
||
### 导入镜像(目标设备)
|
||
|
||
```bash
|
||
docker load < images.tar
|
||
```
|
||
|
||
## Step-by-Step Guide
|
||
|
||
### 步骤 1:在源设备打包镜像
|
||
|
||
在工作笔记本(已安装 Docker Desktop)上,使用 `docker save` 命令将镜像打包成 TAR 文件:
|
||
|
||
```bash
|
||
# 拉取镜像(如需要)
|
||
docker pull xiaoyaliu/alist
|
||
|
||
# 打包镜像为 tar 文件
|
||
docker save -o xiaoya.tar xiaoyaliu/alist
|
||
```
|
||
|
||
### 步骤 2:传输 TAR 文件
|
||
|
||
将生成的 `xiaoya.tar` 文件上传到 Synology NAS 的文件系统中(通过 SMB/NFS 等方式)。
|
||
|
||
### 步骤 3:在 NAS 导入镜像
|
||
|
||
通过 SSH 连接到 NAS,运行 `docker load` 命令导入镜像:
|
||
|
||
```bash
|
||
# 进入 tar 文件所在目录
|
||
cd /volume1/docker/images
|
||
|
||
# 导入镜像
|
||
docker load < xiaoya.tar
|
||
```
|
||
|
||
### 步骤 4:验证
|
||
|
||
```bash
|
||
# 查看镜像列表
|
||
docker images
|
||
|
||
# 在 NAS 的 Container Manager 界面中查看镜像列表
|
||
```
|
||
|
||
## Alternative Methods
|
||
|
||
### 方法二:使用 docker commit
|
||
|
||
从容器创建新镜像后再导出:
|
||
|
||
```bash
|
||
# 从容器创建镜像
|
||
docker commit container_id new_image_name:tag
|
||
|
||
# 导出镜像
|
||
docker save -o images.tar new_image_name:tag
|
||
```
|
||
|
||
### 方法三:使用 docker export/import
|
||
|
||
> ⚠️ 注意:export/import 操作的是容器文件系统,而非镜像层,不保留 CMD/ENTRYPOINT 等元数据
|
||
|
||
```bash
|
||
# 导出容器
|
||
docker export -o container.tar container_id
|
||
|
||
# 导入为镜像
|
||
docker import container.tar new_image_name:tag
|
||
```
|
||
|
||
## save/load vs export/import
|
||
|
||
| 特性 | save/load | export/import |
|
||
|------|-----------|---------------|
|
||
| 操作对象 | 镜像层 | 容器文件系统 |
|
||
| 保留历史层 | ✅ | ❌ |
|
||
| 保留元数据 | ✅ | ❌ |
|
||
| 文件大小 | 较大 | 较小 |
|
||
| 适用场景 | 镜像迁移 | 容器快照 |
|
||
|
||
## Related Concepts
|
||
|
||
- [[concepts/Docker-Image.md]]
|
||
- [[concepts/Docker-Save.md]]
|
||
- [[concepts/Docker-Load.md]]
|
||
|
||
## Related Entities
|
||
|
||
- [[entities/Docker.md]]
|
||
- [[entities/Xiaoya.md]]
|
||
|
||
## Tags
|
||
|
||
#docker #synology #nas #home-office #镜像传输
|