Docker-machine与rsync配合使用

3

我想使用rsync来同步文件夹。 docker-machine可以使用-d选项进行rsync

docker-machine scp -r -d . machine-name:~

这个命令似乎可以正常工作,但是我想将rsync的使用扩展到以下方面:

rsync -rvz --delete --exclude-from=.rsyncignore -e 'docker-machine ssh machine-name' . :

我也尝试了以下命令:

sshpass -p "tcuser" rsync -rvz --delete --exclude-from=.rsyncignore  . docker@`docker-machine ip machine-name`:

两条命令第一次都会同步所有内容,但是一旦同步完成后,我就再也无法访问虚拟机了。如果我尝试通过docker-machine ssh machine-name访问虚拟机,则会收到exit status 255的响应。这是怎么回事?


您的容器共享(Docker-Machine)路径使用了哪种类型的权限? - Soleil
我不是在谈论容器,因为这是一个 Docker 机器。此外,你可能指的是我想同步的目录中文件的权限,它们可能会有所不同(读取、写入和执行),但用户所有者始终相同。 - silgon
你可以执行命令 "docker ps -a",检查一下你的机器ID是否已更改?也许你需要执行 "docker-compose up -d" 命令,因为你的镜像已经被更改了。 - Soleil
请仔细阅读,Docker机器在运行任何容器之前就失败了,问题发生在文件与虚拟机同步期间。 - silgon
抱歉,也许您需要查看此教程 https://medium.freecodecamp.org/speed-up-file-access-in-docker-for-mac-fbeee65d0ee7 - Soleil
1个回答

1

您可以在此处找到更多信息。

1.- Dockerfile

 FROM centos:6
    # install rsync
    RUN yum update -y
    RUN yum -y install rsync xinetd
    # configure rsync
    ADD ./rsyncd.conf /root/
    RUN sed -i 's/disable[[:space:]]*=[[:space:]]*yes/disable = no/g' /etc/xinetd.d/rsync # enable rsync
    RUN cp /root/rsyncd.conf /etc/rsyncd.conf
    RUN /etc/rc.d/init.d/xinetd start
    RUN chkconfig xinetd on
    # create the dir that will be synced
    RUN mkdir /home/share
    # just to keep the container running
    CMD /etc/rc.d/init.d/xinetd start && tail -f /dev/null

2. - 在存储库目录中构建容器。

docker build . -t docker-rsync

3. - 启动容器并将rsync服务器端口映射到特定的主机端口,例如

docker run -p 10873:873 docker-rsync

4.-现在我们需要同步共享目录,并在任何更改后再次同步。 Rsync仅在初始同步后同步更改。

# initial sync
rsync -avP ./share --delete rsync://localhost:10873/example/
# sync on change
fswatch -0 ./share | xargs -0 -n 1 -I {} rsync -avP ./share --delete rsync://localhost:10873/example/

升级:因为Docker机器更改内容和虚拟磁盘需要升级

当在Docker容器中更改文件时的第一个命令:

rsync --ignore-existing --sparse ...

当Docker机器在容器的稀疏模式下创建新文件时,会出现以下情况:

 rsync --inplace ...

很抱歉,但正如我在评论中向您解释的那样,我不想将rsync同步到容器中,我想将rsync同步到由docker-machine管理的虚拟机中。 - silgon
你使用Hyper-V或Oracle VirtualBox,还是其他的虚拟机?并且在哪个操作系统上工作? - Soleil
我正在使用 Ubuntu 18.04.2 LTS,并且使用 virtualbox 驱动程序创建了 docker-machine。 - silgon
你可能需要查看这个链接 https://askubuntu.com/questions/161759/how-to-access-a-shared-folder-in-virtualbox,以及这个链接 https://superuser.com/questions/633431/whats-the-recommended-way-to-move-a-virtualbox-vm-to-another-computer。 - Soleil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接