докер-машина с rsync - PullRequest
       7

докер-машина с rsync

0 голосов
/ 05 марта 2019

Я хочу использовать rsync для синхронизации папки.docker-machine позволяет rsync с -d option.

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.Что происходит?

1 Ответ

0 голосов
/ 06 марта 2019

Более подробную информацию о можно найти здесь

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/

ОБНОВЛЕНИЕ: поскольку докер-машины изменяют содержимое, а виртуальный диск требует обновления

первая команда, когда измененные файлы в док-контейнерах:

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

секунда, когда докер-машина создает новые файлы в режиме разрежения контейнеров, затем:

 rsync --inplace ...
...