Skip to content

Instantly share code, notes, and snippets.

@Mikado8231
Created April 20, 2020 21:14
Show Gist options
  • Save Mikado8231/bf207a019373f9e539af4d511ae15e0d to your computer and use it in GitHub Desktop.
Save Mikado8231/bf207a019373f9e539af4d511ae15e0d to your computer and use it in GitHub Desktop.
#!/bin/sh
# source https://community.synology.com/enu/forum/1/post/131600
echo "-- START ($(date +%Y%m%d_%H%M%S)) --"
#### TO UPDATE BEFORE RUN ####
DOCKER_BIN_VERSION=19.03.8
DOCKER_COMPOSE_VERSION=1.25.5
##############################
WORKING_DIR=/tmp/docker_update
DOCKER_BACKUP_FILENAME=docker_backup_$(date +%Y%m%d_%H%M%S).tar.gz
SYNO_DOCKER_SERV_NAME=pkgctl-Docker
SYNO_DOCKER_DIR=/var/packages/Docker
SYNO_DOCKER_BIN=$SYNO_DOCKER_DIR/target/usr/bin
SYNO_DOCKER_JSON=$SYNO_DOCKER_DIR/etc/dockerd.json
# Stop Docker service if running
synoservicectl --status $SYNO_DOCKER_SERV_NAME | grep running -q && (echo "--Stop Docker service" ; synoservicectl --status $SYNO_DOCKER_SERV_NAME)
echo "--Prepare environment $WORKING_DIR"
[ !-d $WORKING_DIR ] && mkdir $WORKING_DIR
cd $WORKING_DIR
rm -f $WORKING_DIR/*
# Backup previous data
echo "--Backup previous Docker binaries $DOCKER_BACKUP_FILENAME"
tar -czf $WORKING_DIR/$DOCKER_BACKUP_FILENAME $SYNO_DOCKER_BIN $SYNO_DOCKER_JSON
[ ! -f $WORKING_DIR/$DOCKER_BACKUP_FILENAME ] && ( echo "Backup issue" ; exit 1 )
# Docker bin
echo "--Download version binaries $DOCKER_BIN_VERSION"
wget https://download.docker.com/linux/static/stable/x86_64/docker-$DOCKER_BIN_VERSION.tgz -qO - | tar -zxvf - -C $WORKING_DIR
[ ! -d $WORKING_DIR/docker ] && ( echo "Download/Untar issue" ; exit 2 )
echo "--Overwrite old Docker binaries"
mv $WORKING_DIR/docker/* $SYNO_DOCKER_BIN/
# Docker compose
echo "--Download docker-compose"
wget https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-Linux-x86_64 -o $SYNO_DOCKER_BIN/docker-compose
echo "--Add exec rights to binaries"
chmod +x $SYNO_DOCKER_BIN/*
echo "--Check log-driver"
# content of file /var/packages/Docker/etc/dockerd.json
# {
# "data-root" : "/var/packages/Docker/target/docker",
# "log-driver" : "json-file",
# "registry-mirrors" : [],
# "group": "administrators"
# }
grep "json-file" $SYNO_DOCKER_JSON -q || ( echo "KO - Missing log-driver" ; cat <<EOF > /var/packages/Docker/etc/dockerd.json
{
"data-root" : "/var/packages/Docker/target/docker",
"log-driver" : "json-file",
"registry-mirrors" : [],
"group": "administrators"
}
EOF
)
echo "--Start Docker service"
synoservicectl --start $SYNO_DOCKER_SERV_NAME
echo "-- END ($(date +%Y%m%d_%H%M%S)) --"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment