通过 SSH 迁移 docker images
需要安装好:
- pv
- zstd
把命令中的 ssh <user>@<host> 替换成目标端:
docker images --format "{{.Repository}}:{{.Tag}}" | grep -v 'none' \
| xargs -I{} bash -c \
"docker save {} | zstd -T0 --fast | pv | ssh <user>@<host> 'zstd -d | docker load'"
需要安装好:
把命令中的 ssh <user>@<host> 替换成目标端:
docker images --format "{{.Repository}}:{{.Tag}}" | grep -v 'none' \
| xargs -I{} bash -c \
"docker save {} | zstd -T0 --fast | pv | ssh <user>@<host> 'zstd -d | docker load'"
ArchLinux (2025-09-06)启动 GPU 容器失败:
-> % docker run --rm --gpus=all nvidia/cuda:12.1.1-base-ubuntu22.04 nvidia-smi Unable to find image 'nvidia/cuda:12.1.1-base-ubuntu22.04' locally 12.1.1-base-ubuntu22.04: Pulling from nvidia/cuda aece8493d397: Already exists dd4939a04761: Pull complete b0d7cc89b769: Pull complete 1532d9024b9c: Pull complete 04fc8a31fa53: Pull complete Digest: sha256:457a4076c56025f51217bff647ca631c7880ad3dbf546b03728ba98297ebbc22 Status: Downloaded newer image for nvidia/cuda:12.1.1-base-ubuntu22.04 docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running prestart hook #0: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy' nvidia-container-cli: ldcache error: process /sbin/ldconfig terminated with signal 9
解决办法:
System Update in Arch Linux, broked NVIDIA container. Open Source drivers
sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml sudo nvidia-ctk config --in-place --set nvidia-container-runtime.mode=cdi systemctl restart docker
# /etc/docker/daemon.json
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
本篇文章收录了鄙人使用的各种服务的 docker-compose.yml
services:
etcd:
container_name: milvus-etcd
image: registry.example.com/quay.io/coreos/etcd:v3.5.18
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
- ETCD_AUTO_COMPACTION_RETENTION=1000
- ETCD_QUOTA_BACKEND_BYTES=4294967296
- ETCD_SNAPSHOT_COUNT=50000
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
command: etcd -advertise-client-urls=http://etcd:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
healthcheck:
test: ["CMD", "etcdctl", "endpoint", "health"]
interval: 30s
timeout: 20s
retries: 3
minio:
container_name: milvus-minio
image: registry.example.com/minio/minio:RELEASE.2023-03-20T20-16-18Z
environment:
MINIO_ACCESS_KEY: minioadmin
MINIO_SECRET_KEY: minioadmin
ports:
- "9001:9001"
- "9000:9000"
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
command: minio server /minio_data --console-address ":9001"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
standalone:
container_name: milvus-standalone
image: registry.example.com/milvusdb/milvus:v2.5.12
command: ["milvus", "run", "standalone"]
security_opt:
- seccomp:unconfined
environment:
ETCD_ENDPOINTS: etcd:2379
MINIO_ADDRESS: minio:9000
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
interval: 30s
start_period: 90s
timeout: 20s
retries: 3
ports:
- "19530:19530"
- "9091:9091"
depends_on:
- "etcd"
- "minio"
networks:
default:
name: milvus
services:
node_exporter:
image: quay.io/prometheus/node-exporter:latest
container_name: node-exporter
command:
- '--path.rootfs=/host'
network_mode: host
pid: host
restart: unless-stopped
volumes:
- '/:/host:ro,rslave'
没有匹配的记录