# 在源主机导出容器
docker export <container-id> > container.tar
# 将tar文件传输到目标主机
scp container.tar user@target-host:/path/
# 在目标主机导入并运行
cat container.tar | docker import - new-image-name
docker run -it new-image-name /bin/bash
# 提交容器为镜像
docker commit <container-id> my-image:latest
# 推送到镜像仓库
docker tag my-image:latest registry.example.com/my-image:latest
docker push registry.example.com/my-image:latest
# 在目标主机拉取并运行
docker pull registry.example.com/my-image:latest
docker run -it registry.example.com/my-image:latest
# 创建Swarm服务(自动跨节点调度)
docker service create --name my-service --replicas 3 my-image:latest
# deployment.yaml示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: registry.example.com/my-image:latest
NFS共享:
# 在两台主机上挂载相同NFS
mount -t nfs nfs-server:/path /mnt/nfs
docker run -v /mnt/nfs:/data my-image
分布式存储:
# 创建数据卷容器
docker create -v /data --name data-container my-image
# 其他容器挂载相同数据卷
docker run --volumes-from data-container my-image
# 创建overlay网络
docker network create -d overlay my-overlay
# 在不同主机上的容器使用相同网络
docker service create --network my-overlay --name my-service my-image
# 在两台主机上安装Weave
weave launch
# 在不同主机上运行容器
eval $(weave env)
docker run --name container1 -it my-image
# 在多台机器上创建Docker环境
docker-machine create --driver virtualbox node1
docker-machine create --driver virtualbox node2
# 使用相同compose文件部署
docker-compose -f docker-compose.yml up -d
# playbook示例
- hosts: docker_hosts
tasks:
- name: Pull latest image
docker_image:
name: registry.example.com/my-image
tag: latest
source: pull
- name: Run container
docker_container:
name: my-container
image: registry.example.com/my-image:latest
volumes:
- /shared/data:/data
ports:
- "8080:80"
选择哪种方案取决于您的具体需求、基础设施复杂度和业务连续性要求。