From 7d8b75d4d6bcf83c24406e406775fefec7178efe Mon Sep 17 00:00:00 2001 From: openoms Date: Wed, 23 Mar 2022 12:42:59 +0000 Subject: [PATCH] docker for amd64, add docker compose 2.0.0, switch #2074 --- home.admin/config.scripts/blitz.docker.sh | 88 ++++++++++++++++++----- 1 file changed, 71 insertions(+), 17 deletions(-) diff --git a/home.admin/config.scripts/blitz.docker.sh b/home.admin/config.scripts/blitz.docker.sh index 63504e05c..65311c8eb 100644 --- a/home.admin/config.scripts/blitz.docker.sh +++ b/home.admin/config.scripts/blitz.docker.sh @@ -6,9 +6,9 @@ # command info if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then - echo "config script to install Docker" - echo "blitz.docker.sh [on|off]" - exit 1 + echo "config script to install Docker" + echo "blitz.docker.sh [on|off]" + exit 1 fi source /mnt/hdd/raspiblitz.conf @@ -16,12 +16,14 @@ source /mnt/hdd/raspiblitz.conf # switch on if [ "$1" = "1" ] || [ "$1" = "on" ]; then + echo echo "### 1) INSTALL Docker ###" # check if Docker is installed - isInstalled=$(docker -v 2>/dev/null | grep -c "docker version") - if [ ${isInstalled} -eq 1 ]; then - echo "# Docker already installed" + if docker -v 2>/dev/null ; then + echo "# Docker is already installed" + docker -v + docker compose version exit 0 fi @@ -45,7 +47,7 @@ if [ "$1" = "1" ] || [ "$1" = "on" ]; then curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg fi echo \ - "deb [arch=arm64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \ + "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update @@ -54,28 +56,77 @@ if [ "$1" = "1" ] || [ "$1" = "on" ]; then sudo apt-get install -y docker-ce docker-ce-cli containerd.io # add the default user to the docker group + # https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user sudo usermod -aG docker admin - echo "### 2) INSTALL docker-compose ###" + echo + echo "### 2) INSTALL docker compose ###" - # add docker compose - sudo pip3 install docker-compose - # add bash completion https://docs.docker.com/compose/completion/ - sudo curl \ - -L https://raw.githubusercontent.com/docker/compose/1.29.0/contrib/completion/bash/docker-compose \ - -o /etc/bash_completion.d/docker-compose + # # add docker compose + # sudo pip3 install docker-compose + # # add bash completion https://docs.docker.com/compose/completion/ + # sudo curl \ + # -L https://raw.githubusercontent.com/docker/compose/1.29.0/contrib/completion/bash/docker-compose \ + # -o /etc/bash_completion.d/docker-compose + # https://docs.docker.com/compose/cli-command/#install-on-linux + DockerComposeVersion=2.0.0 + # DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} + # mkdir -p $DOCKER_CONFIG/cli-plugins + sudo mkdir -p /usr/local/lib/docker/cli-plugins + sudo curl -SL "https://github.com/docker/compose/releases/download/v${DockerComposeVersion}/docker-compose-linux-$(dpkg --print-architecture)" \ + -o /usr/local/lib/docker/cli-plugins/docker-compose + sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose + + # switch docker-compose to docker compose + # curl -fL https://raw.githubusercontent.com/docker/compose-switch/master/install_on_linux.sh | sudo sh + COMPOSE_SWITCH_VERSION="v1.0.4" + COMPOSE_SWITCH_URL="https://github.com/docker/compose-switch/releases/download/${COMPOSE_SWITCH_VERSION}/docker-compose-linux-$(dpkg --print-architecture)" + if ! docker compose version 2>&1 >/dev/null; then + echo "Docker Compose V2 is not installed" + exit 1 + fi + curl -fL $COMPOSE_SWITCH_URL -o /usr/local/bin/compose-switch + chmod +x /usr/local/bin/compose-switch + COMPOSE=$(command -v docker-compose) + if [ "$COMPOSE" = /usr/local/bin/docker-compose ]; then + # This is a manual installation of docker-compose + # so, safe for us to rename binary + mv /usr/local/bin/docker-compose /usr/local/bin/docker-compose-v1 + COMPOSE=/usr/local/bin/docker-compose-v1 + fi + ALTERNATIVES="update-alternatives" + if ! command -v $ALTERNATIVES; then + ALTERNATIVES=alternatives + fi + echo "Configuring docker-compose alternatives" + if [ -n "$COMPOSE" ]; then + $ALTERNATIVES --install /usr/local/bin/docker-compose docker-compose $COMPOSE 1 + fi + $ALTERNATIVES --install /usr/local/bin/docker-compose docker-compose /usr/local/bin/compose-switch 99 + echo "'docker-compose' is now set to run Compose V2" + echo "use '$ALTERNATIVES --config docker-compose' if you want to switch back to Compose V1" + + echo echo "### 3) Symlink the working directory to the SSD" sudo systemctl stop docker sudo systemctl stop docker.socket - sudo mv /var/lib/docker /mnt/hdd/ - sudo ln -s /mnt/hdd/docker /var/lib/docker + + # keep the docker dir on the OS drive if the disk is ZFS - needs special config + # https://docs.docker.com/storage/storagedriver/zfs-driver/#configure-docker-with-the-zfs-storage-driver + isZFS=$(zfs list 2>/dev/null | grep -c "/mnt/hdd") + if [ "${isZFS}" -eq 0 ]; then + sudo mv /var/lib/docker /mnt/hdd/ + sudo ln -s /var/lib/docker /mnt/hdd/docker + fi sudo systemctl start docker sudo systemctl start docker.socket # setting value in raspi blitz config /home/admin/config.scripts/blitz.conf.sh set docker "on" echo "# Docker install done" + docker -v + docker compose version exit 0 fi @@ -85,10 +136,13 @@ if [ "$1" = "0" ] || [ "$1" = "off" ]; then /home/admin/config.scripts/blitz.conf.sh set docker "off" echo "*** REMOVING Docker & docker-compose ***" sudo pip3 uninstall -y docker-compose + sudo rm /usr/local/lib/docker/cli-plugins/docker-compose + sudo rm /usr/local/bin/docker-compose-v1 + sudo rm /usr/local/bin/compose-switch sudo apt-get purge -y docker-ce docker-ce-cli containerd.io echo "# Docker remove done" exit 0 fi echo "error='wrong parameter'" -exit 1 \ No newline at end of file +exit 1