I’m attempting to get all docker containers to stop before duplicati backups to avoid corruption. so mounting the required docker to the duplicati container and doing docker [stop/start] Radarr Sonarr Jackett Nextcloud MariaDB SWAG Deluge
I see that it works as expected. But putting that in a bash script:
if [ "$DUPLICATI__OPERATIONNAME" = "Backup" ]; then
echo "Stopping Docker Containers" >$logfile
echo $? >>$logfile
/usr/bin/docker stop Radarr Sonarr Jackett Nextcloud MariaDB SWAG Deluge >>$logfile
exit 0
else
echo "Backup Not running" >>$logfile
exit 1
fi
I see in the log file that the echo commands worked but the docker command did nothing, no errors or anything. anyone know how to fix this?
Hello and welcome to the forum!
What exactly do you mean by this? You installed the docker binaries into the container? Also, are you mapping the docker.sock
from the host to the container?
Did you run the command from within the Duplicati docker container? Make sure you aren’t testing this at the host level.
A final thought is to make sure you have the bash script identifier at the top of your script: #!/bin/bash
Yes, /var/run/docker.sock
is mounted to /var/run/docker.sock
and /usr/bin/docker
is mounted to /usr/bin/docker
and as I said running the docker commands in docker exec -it Duplicati /bin/bash
within the container works.
Yes, I was 100% in the container.
sorry I failed to include the entire script before,
#!/bin/bash
logfile=“/config/docker.log”
if [ “$DUPLICATI__OPERATIONNAME” = “Backup” ]; then
echo “Stopping Docker Containers” >$logfile
echo $? >>$logfile
/usr/bin/docker stop Radarr Sonarr Jackett Nextcloud MariaDB SWAG Deluge >>$logfile
exit 0
else
echo “Backup Not running” >>$logfile
exit 1
fi
and the output of /config/docker.log is:
Stopping Docker Containers
0
the expected output is:
Stopping Docker Containers
Radarr
Sonarr
Jackett
Nextcloud
MariaDB
SWAG
Deluge
Edit: found an error in the duplicati logs:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
which means
the current user can’t access the docker engine, because you’re lacking permissions to access the unix socket to communicate with the engine.
So is there a way to get duplicati to run this as root?
That is configured at the container level. What docker image are you using? The official duplicati docker image runs duplicati as root by default. The linuxserver image does not, although you can change it to run as root (look at the PGID and PUID settings).
The two images have differences in how they map volumes so use caution if you decide to switch. Personally I use the official docker image.