#!/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 < /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)) --"