eeacms/rsync这是一个基于Alpine的rsync服务器/客户端Docker镜像,可用于在Docker卷间轻松同步数据。
将远程服务器文件同步到本地Docker卷,执行以下命令(替换[***已删除]为实际远程地址,blobstorage为本地卷名):
bash$ docker run --rm -v blobstorage:/data/ eeacms/rsync \ rsync -avzx --numeric-ids [***已删除]:/var/local/blobs/ /data/
先创建一个数据容器(用于持久化数据),再通过该容器同步文件:
创建数据容器:
bash$ docker run -d --name data -v /data busybox
同步远程文件到数据容器:
bash$ docker run --rm --volumes-from=data eeacms/rsync \ rsync -avz [***已删除]:/var/local/blobs/ /data/
如需客户端定时打包并同步数据,可通过环境变量配置定时任务(CRON_TASK_1、CRON_TASK_2等支持多个任务),启动命令如下:
bash$ docker run --name=rsync_client -v client_vol_to_sync:/data \ -e CRON_TASK_1="0 1 * * * /data/pack-db.sh" \ # 每天1点执行打包脚本 -e CRON_TASK_2="0 3 * * * rsync -e 'ssh -p 2222' -aqx --numeric-ids [***已删除]:/data/ /data/" \ # 每天3点同步数据 eeacms/rsync client
启动后,控制台会输出客户端的SSH公钥,需保存该密钥用于服务器授权。
若需容器重建后复用SSH密钥,需将密钥目录(/root/.ssh)挂载到Docker卷。首次启动时会自动生成密钥,后续启动直接复用:
bash$ docker run --name=rsync_client -v ssh-key:/root/.ssh -v client_vol_to_sync:/data \ eeacms/rsync client
服务器端需持久化主机密钥目录(/ssh_host_keys),确保容器重建后密钥一致:
bash$ docker run --name=rsync_server -v ssh-host-keys:/ssh_host_keys -v server_vol_to_sync:/data \ eeacms/rsync server
若客户端需跳过主机密钥检查,可在SSH命令中添加参数:
-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
在目标服务器(如foo.bar.com)启动rsync服务器,需映射端口、挂载卷并添加客户端授权密钥:
bash# docker run --name=rsync_server -d -p 2222:22 -v ssh-host-keys:/ssh_host_keys -v server_vol_to_sync:/data \ -e SSH_AUTH_KEY_1="<客户端SSH公钥>" \ # 替换为客户端输出的公钥 -e SSH_AUTH_KEY_n="<其他客户端公钥>" \ # 支持多个客户端密钥,用SSH_AUTH_KEY_1、SSH_AUTH_KEY_2等 eeacms/rsync server
在服务器容器中创建测试文件:
bash$ docker exec -it rsync_server sh $ touch /data/test # 在服务器数据目录创建test文件
在客户端容器中同步并检查:
bash$ docker exec -it rsync_client sh $ rsync -e 'ssh -p 2222' -avz [***已删除]:/data/ /data/ # 同步服务器数据到客户端 $ ls -l /data/ # 查看是否存在test文件,确认同步成功
如需在Rancher环境下的容器间同步数据,按以下步骤操作:
确保源容器所在主机可访问目标服务器的2222端口(需提前申请网络权限)。
在源容器(如生产环境)所在主机创建客户端容器:
eeacms/rsyncshVolumes from → 选择源容器(需同步数据的容器)启动后,查看容器日志,复制输出的SSH公钥(用于服务器授权)。
将目标容器临时迁移到可访问的服务器,创建服务器容器:
eeacms/rsync2222:22(将容器22端口映射到主机2222端口)serverSSH_AUTH_KEY="<步骤1中的客户端公钥>"Volumes from → 选择目标容器(接收数据的容器)进入步骤1创建的客户端容器,运行同步命令(替换占位符为实际路径和IP):
bash$ rsync -e 'ssh -p 2222' -avz <源数据路径> root@<目标服务器IP>:<目标路径>
同步完成后,删除rsync客户端和服务器容器,将目标容器迁回原位置(如需)。




manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务