-
-
Save DaveMDS/c35d77e51e0186a4fe2e577f51a5b09a to your computer and use it in GitHub Desktop.
#!/bin/bash | |
set -e | |
ARCH=aarch64 | |
DOCKER_VERSION=20.10.9 | |
COMPOSE_VERSION=2.5.1 | |
DOCKER_DIR=/volume1/@docker | |
echo "Downloading docker $DOCKER_VERSION-$ARCH" | |
curl "https://download.docker.com/linux/static/stable/$ARCH/docker-$DOCKER_VERSION.tgz" | tar -xz -C /usr/local/bin --strip-components=1 | |
echo "Creating docker working directory $DOCKER_DIR" | |
mkdir -p "$DOCKER_DIR" | |
echo "Creating docker.json config file" | |
mkdir -p /usr/local/etc/docker | |
cat <<EOT > /usr/local/etc/docker/docker.json | |
{ | |
"storage-driver": "vfs", | |
"iptables": false, | |
"bridge": "none", | |
"data-root": "$DOCKER_DIR" | |
} | |
EOT | |
echo "Creating docker startup script" | |
cat <<'EOT' > /usr/local/etc/rc.d/docker.sh | |
#!/bin/sh | |
# Start docker daemon | |
NAME=dockerd | |
PIDFILE=/var/run/$NAME.pid | |
DAEMON_ARGS="--config-file=/usr/local/etc/docker/docker.json --pidfile=$PIDFILE" | |
case "$1" in | |
start) | |
echo "Starting docker daemon" | |
# ulimit -n 4096 # needed for influxdb (uncomment if your limit is lower) | |
/usr/local/bin/dockerd $DAEMON_ARGS & | |
;; | |
stop) | |
echo "Stopping docker daemon" | |
kill $(cat $PIDFILE) | |
;; | |
*) | |
echo "Usage: "$1" {start|stop}" | |
exit 1 | |
esac | |
exit 0 | |
EOT | |
chmod 755 /usr/local/etc/rc.d/docker.sh | |
echo "Creating docker group" | |
egrep -q docker /etc/group || synogroup --add docker root | |
echo "Installing docker compose $COMPOSE_VERSION" | |
curl -SL "https://github.com/docker/compose/releases/download/v$COMPOSE_VERSION/docker-compose-linux-$ARCH" \ | |
--create-dirs -o /usr/local/lib/docker/cli-plugins/docker-compose | |
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose | |
chgrp -R docker /usr/local/lib/docker | |
echo "Starting docker" | |
/usr/local/etc/rc.d/docker.sh start | |
echo "Done. Please add your user to the docker group in the Synology GUI and reboot your NAS." |
@killkrt Did this resolve? I have an DS214+
and thus an armv7l
processor. How did you get it to work with armv7l
or where did you find help. Thanks in advance!
@thunermay sorry I cannot recall it, actually I was supporting a friend, so it was not for my NAS. BTW it was quite tricky and it was not fully working, some features were missing (if I am not wrong macvlan and others).
My DS418's umask seems to default to 0077, so I needed to make the following change to use docker compose
:
@@ -57,7 +57,7 @@
echo "Installing docker compose $COMPOSE_VERSION"
curl -SL "https://github.com/docker/compose/releases/download/v$COMPOSE_VERSION/docker-compose-linux-$ARCH" \
--create-dirs -o /usr/local/lib/docker/cli-plugins/docker-compose
-chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
+chmod -R ug+rx /usr/local/lib/docker
chgrp -R docker /usr/local/lib/docker
I have a DS418 and this script worked, in that the components were installed as expected and docker could be started and stopped.
However, these lines:
https://gist.github.com/DaveMDS/c35d77e51e0186a4fe2e577f51a5b09a#file-get-docker-sh-L20-L21
mean that containers are isolated from the outside world.
If you remove "bridge" and "iptables" from docker.json, then you get error message about "can't initialize iptables table 'nat'" at docker startup. I resolved these by running "modprobe nf_nat_ipv4 iptable_nat" before starting docker. After that, containers are able to make external connections via the bridge network.
Perhaps you could add that to your startup script.
Yeah, I know, I was referring to:
Just as your information it seems that it is not working just downloading the
armhf
version, it seems that an extra patch it is needed.