From charlesreid1

Docker container running rsync:


This covers how to run an rsync daemon/server via an rsync container.


The purpose of running rsync in a docker container is for consistency - we are already running an stunnel docker container, listening for the rsync traffic, so I wanted to run the rsync server in a container as well.

Basic workflow is as follows:

  • Makefile is where the user starts/executes commands
  • The Makefile contains a call to the docker build and docker run scripts, and tells the user to open the firewall.
  • The build script just calls docker build
  • The run script calls docker run, and connects the host and container port. It also sets a host directory to mount as a volume. This directory should contain whatever is being rsync'ed.
  • The Dockerfile contains all the other details needed, and concludes by calling a start script
  • The start script starts the rsync daemon, then (to prevent the container from dying) runs tail -f /dev/null to keep something actively running in the container.

Link to the Makefile:

Link to build script:

Link to run script:

Link to rsync configuration script /etc/rsyncd.conf:

Link to Dockerfile:

Link to startup script that prevents Docker container from dying when all commands finish:

Note: if you have a /etc/rsyncd.conf file in place on the docker host machine, rsync will probably be one of the services that starts on boot. To stop the host rsync from starting on boot, run:

$ rm /etc/init.d/rsync