From e174c6610cfb39700936ecda4c6c3d9f8f12724c Mon Sep 17 00:00:00 2001 From: "nap.liu" Date: Mon, 12 Dec 2022 16:05:11 +0800 Subject: [PATCH] init --- .gitignore | 10 ++++++ install-docker-compose.sh | 75 +++++++++++++++++++++++++++++++++++++++ install-docker.sh | 63 ++++++++++++++++++++++++++++++++ readme.md | 5 +++ 4 files changed, 153 insertions(+) create mode 100644 .gitignore create mode 100644 install-docker-compose.sh create mode 100644 install-docker.sh create mode 100644 readme.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bedabae --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/.idea/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml + +.idea diff --git a/install-docker-compose.sh b/install-docker-compose.sh new file mode 100644 index 0000000..5c46085 --- /dev/null +++ b/install-docker-compose.sh @@ -0,0 +1,75 @@ +#!/bin/sh +# +# Forked from https://github.com/linuxserver/docker-docker-compose/blob/master/run.sh +# +# Run docker-compose in a container +# +# This script will attempt to mirror the host paths by using volumes for the +# following paths: +# * $(pwd) +# * $(dirname $COMPOSE_FILE) if it's set +# * $HOME if it's set +# +# You can add additional volumes (or any docker run options) using +# the $COMPOSE_OPTIONS environment variable. +# +# You can set a specific image tag from Docker Hub, such as "1.26.2-ls9", or "alpine" +# using the $DOCKER_COMPOSE_IMAGE_TAG environment variable (defaults to "latest") +# + + +set -e + +# set image tag to latest if not globally set +DOCKER_COMPOSE_IMAGE_TAG="${DOCKER_COMPOSE_IMAGE_TAG:-latest}" +IMAGE="ghcr.io/linuxserver/docker-compose:$DOCKER_COMPOSE_IMAGE_TAG" + +# Setup options for connecting to docker host +if [ -z "$DOCKER_HOST" ]; then + DOCKER_HOST='unix:///var/run/docker.sock' +fi +if [ -S "${DOCKER_HOST#unix://}" ]; then + DOCKER_ADDR="-v ${DOCKER_HOST#unix://}:${DOCKER_HOST#unix://} -e DOCKER_HOST" +else + DOCKER_ADDR="-e DOCKER_HOST -e DOCKER_TLS_VERIFY -e DOCKER_CERT_PATH" +fi + + +# Setup volume mounts for compose config and context +if [ "$(pwd)" != '/' ]; then + VOLUMES="-v $(pwd):$(pwd)" +fi +if [ -n "$COMPOSE_FILE" ]; then + COMPOSE_OPTIONS="$COMPOSE_OPTIONS -e COMPOSE_FILE=$COMPOSE_FILE" + compose_dir="$(dirname "$COMPOSE_FILE")" + # canonicalize dir, do not use realpath or readlink -f + # since they are not available in some systems (e.g. macOS). + compose_dir="$(cd "$compose_dir" && pwd)" +fi +if [ -n "$COMPOSE_PROJECT_NAME" ]; then + COMPOSE_OPTIONS="-e COMPOSE_PROJECT_NAME $COMPOSE_OPTIONS" +fi +# TODO: also check --file argument +if [ -n "$compose_dir" ]; then + VOLUMES="$VOLUMES -v $compose_dir:$compose_dir" +fi +if [ -n "$HOME" ]; then + VOLUMES="$VOLUMES -v $HOME:$HOME -e HOME" # Pass in HOME to share docker.config and allow ~/-relative paths to work. +fi + +# Always set -i to support piped and terminal input in run/exec +DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -i" + + +# Handle userns security +if docker info --format '{{json .SecurityOptions}}' 2>/dev/null | grep -q 'name=userns'; then + DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS --userns=host" +fi + +# Detect SELinux and add --privileged if necessary +if docker info --format '{{json .SecurityOptions}}' 2>/dev/null | grep -q 'name=selinux'; then + DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS --privileged" +fi + +# shellcheck disable=SC2086 +exec docker run --rm $DOCKER_RUN_OPTIONS $DOCKER_ADDR $COMPOSE_OPTIONS $VOLUMES -w "$(pwd)" $IMAGE "$@" diff --git a/install-docker.sh b/install-docker.sh new file mode 100644 index 0000000..163fb29 --- /dev/null +++ b/install-docker.sh @@ -0,0 +1,63 @@ +#!/bin/bash +set -e + +ARCH=aarch64 +DOCKER_VERSION=20.10.0 +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 < /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" + /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" +synogroup --add docker root + +echo "Installing docker compose" +# curl -L --fail https://gist.githubusercontent.com/ta264/af20c367aafa63795c3104d4b0c8b148/raw/4f6d257c026596cfce1c9052d9ac426a50e9f205/run.sh -o /usr/local/bin/docker-compose +curl -L --fail https://git.js-css.com/nap/ds218play-docker/raw/branch/master/trackers_all.txt -o /usr/local/bin/docker-compose +chmod +x /usr/local/bin/docker-compose + +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." diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..342336e --- /dev/null +++ b/readme.md @@ -0,0 +1,5 @@ +# 群辉 DS218Play 安装docker + +该脚本可以安装docker到群辉上 并且开机自动启动 + +[原始文件地址](https://wiki.servarr.com/en/docker-arm-synology)