Docker 镜像打包传输流程:docker save 打包 → 传输 → docker load 加载 → docker run 启动,NPU 容器需挂载驱动目录并启用特权模式。
前提确认
1
2
3
4
5
| # 确认镜像存在
docker images | grep veomni_npu
# 确认磁盘空间(镜像通常 30-50GB)
df -h /dpc
|
镜像打包
1
2
3
4
5
| # 打包为 tar
docker save veomni_npu:latest -o /dpc/zzm/veomni_npu_latest.tar
# 压缩(可选,35GB 可压缩至 15-20GB)
gzip /dpc/zzm/veomni_npu_latest.tar
|
命令说明:
| 参数 | 作用 |
|---|
docker save | 将镜像分层保存为 tar |
-o | 指定输出路径 |
gzip | 压缩减小体积 |
传输到目标节点
方式一:共享存储(推荐)
打包后放在共享存储(如 /dpc/),其他节点直接访问。
方式二:SCP 传输
1
2
3
4
5
6
7
8
9
10
| # 单节点传输
scp /dpc/zzm/veomni_npu_latest.tar.gz root@g0007:/dpc/zzm/
# 批量传输
for node in g0007 g0008 g0009; do
scp /dpc/zzm/veomni_npu_latest.tar.gz root@$node:/dpc/zzm/
done
# rsync 替代(传输中断可续传)
rsync -avz /dpc/zzm/veomni_npu_latest.tar.gz root@g0007:/dpc/zzm/
|
加载镜像
1
2
3
4
5
6
7
8
9
| # 加载 tar 包
docker load -i /dpc/zzm/veomni_npu_latest.tar
# 加载压缩包(先解压)
gzip -d /dpc/zzm/veomni_npu_latest.tar.gz
docker load -i /dpc/zzm/veomni_npu_latest.tar
# 验证
docker images | grep veomni_npu
|
启动容器
1
2
3
4
5
6
7
8
9
10
11
| # NPU 容器启动命令
docker run -d \
--name veomni_speed \
--privileged \
--network host \
-v /dpc:/dpc \
-v /usr/local/Ascend:/usr/local/Ascend \
-v /var/log/npu:/var/log/npu \
--env ASCEND_DEVICE_ID=0 \
veomni_npu:latest \
/bin/bash -c "tail -f /dev/null"
|
关键参数:
| 参数 | 作用 |
|---|
--privileged | 特权模式,访问 NPU 设备 |
--network host | 主机网络,避免通信隔离 |
-v /usr/local/Ascend | 挂载昇腾 CANN 驱动 |
-v /dpc:/dpc | 挂载共享存储 |
tail -f /dev/null | 保持容器后台运行 |
验证
1
2
3
| docker ps | grep veomni_speed
docker exec -it veomni_speed bash
npu-smi info # 检查 NPU 可用性
|
批量部署脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #!/bin/bash
# 打包镜像
docker save veomni_npu:latest -o /dpc/zzm/veomni_npu_latest.tar
gzip /dpc/zzm/veomni_npu_latest.tar
# 批量部署
nodes=("g0007" "g0008" "g0009")
for node in "${nodes[@]}"; do
scp /dpc/zzm/veomni_npu_latest.tar.gz root@$node:/dpc/zzm/
ssh root@$node << EOF
gzip -d /dpc/zzm/veomni_npu_latest.tar.gz
docker load -i /dpc/zzm/veomni_npu_latest.tar
docker stop veomni_speed || true
docker rm veomni_speed || true
docker run -d --name veomni_speed --privileged --network host \
-v /dpc:/dpc -v /usr/local/Ascend:/usr/local/Ascend \
veomni_npu:latest /bin/bash -c "tail -f /dev/null"
EOF
done
|
避坑要点
- 驱动一致性:目标节点 CANN 驱动版本必须一致
- 磁盘空间:确保至少 40GB 可用空间
- 容器命名:保持一致便于脚本复用
- 权限问题:必须加
--privileged - 路径一致:挂载共享存储保证数据路径相同
Comments