From f278bf770bf7f86db467da8b5eda4f95f9f6c8e7 Mon Sep 17 00:00:00 2001 From: aptalca <541623+aptalca@users.noreply.github.com> Date: Mon, 7 Aug 2023 13:19:01 -0400 Subject: [PATCH 1/3] add buildx, deprecate armhf --- Dockerfile | 31 +++++++------------ README.md | 2 +- .../init-mod-universal-docker-setup/run | 13 +++++--- 3 files changed, 21 insertions(+), 25 deletions(-) diff --git a/Dockerfile b/Dockerfile index 87c8206..29d9a99 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,7 +25,6 @@ RUN \ mkdir -p \ /root-layer/docker-bins \ /tmp/docker_x86_64 \ - /tmp/docker_armv7l \ /tmp/docker_aarch64 && \ curl -fo \ /tmp/docker_x86_64.tgz -L \ @@ -34,13 +33,6 @@ RUN \ /tmp/docker_x86_64.tgz -C \ /tmp/docker_x86_64 --strip-components=1 && \ cp /tmp/docker_x86_64/docker /root-layer/docker-bins/docker_x86_64 && \ - curl -fo \ - /tmp/docker_armv7l.tgz -L \ - "https://download.docker.com/linux/static/stable/armhf/docker-${DOCKER_RELEASE}.tgz" && \ - tar xf \ - /tmp/docker_armv7l.tgz -C \ - /tmp/docker_armv7l --strip-components=1 && \ - cp /tmp/docker_armv7l/docker /root-layer/docker-bins/docker_armv7l && \ curl -fo \ /tmp/docker_aarch64.tgz -L \ "https://download.docker.com/linux/static/stable/aarch64/docker-${DOCKER_RELEASE}.tgz" && \ @@ -52,9 +44,6 @@ RUN \ curl -fo \ /root-layer/docker-bins/docker-compose_x86_64 -L \ "https://github.com/docker/compose/releases/download/v${COMPOSE_RELEASE}/docker-compose-linux-x86_64" && \ - curl -fo \ - /root-layer/docker-bins/docker-compose_armv7l -L \ - "https://github.com/docker/compose/releases/download/v${COMPOSE_RELEASE}/docker-compose-linux-armv7" && \ curl -fo \ /root-layer/docker-bins/docker-compose_aarch64 -L \ "https://github.com/docker/compose/releases/download/v${COMPOSE_RELEASE}/docker-compose-linux-aarch64" && \ @@ -71,16 +60,18 @@ RUN \ curl -fo \ /root-layer/docker-bins/compose-switch_aarch64 -L \ "https://github.com/docker/compose-switch/releases/download/v${SWITCH_RELEASE}/docker-compose-linux-arm64" && \ - echo "**** compile compose switch on armhf ****" && \ + echo "**** retrieve latest buildx version ****" && \ + if [ -z ${BUILDX_RELEASE+x} ]; then \ + BUILDX_RELEASE=$(curl -sX GET "https://api.github.com/repos/docker/buildx/releases/latest" \ + | awk '/tag_name/{print $4;exit}' FS='[""]'); \ + fi && \ + echo "**** grab buildx plugin ****" && \ curl -fo \ - /tmp/compose-switch.tar.gz -L \ - "https://github.com/docker/compose-switch/archive/refs/tags/v${SWITCH_RELEASE}.tar.gz" && \ - mkdir -p /tmp/compose-switch && \ - tar xf \ - /tmp/compose-switch.tar.gz -C \ - /tmp/compose-switch --strip-components=1 && \ - cd /tmp/compose-switch && \ - CGO_ENABLED=0 GOOS=linux GOARCH=arm go build -ldflags="-s -w -X github.com/docker/compose-switch/internal.Version=${SWITCH_RELEASE}" -o /root-layer/docker-bins/compose-switch_armv7l ./main.go && \ + /root-layer/docker-bins/buildx_x86_64 -L \ + "https://github.com/docker/buildx/releases/download/${BUILDX_RELEASE}/buildx-${BUILDX_RELEASE}.linux-amd64" && \ + curl -fo \ + /root-layer/docker-bins/buildx_aarch64 -L \ + "https://github.com/docker/buildx/releases/download/${BUILDX_RELEASE}/buildx-${BUILDX_RELEASE}.linux-arm64" && \ chmod +x /root-layer/docker-bins/* && \ rm -rf /tmp/* diff --git a/README.md b/README.md index f822b9b..db8a2b7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Docker - Docker mod for all images -This mod adds `docker` and `docker-compose` binaries to any linuxserver image. +This mod adds the `docker` binary as wells as the `buildx` and the `compose` plug-ins to any linuxserver image. **IMPORTANT NOTE**: For docker access inside a container, a volume mapping needs to be added for `/var/run/docker.sock:/var/run/docker.sock:ro` in the container's docker run/create/compose. If you'd like to connect to a remote docker service instead, you don't have to map the docker sock; you can either set an env var for `DOCKER_HOST=remoteaddress` or use the docker cli option `-H`. diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-universal-docker-setup/run b/root/etc/s6-overlay/s6-rc.d/init-mod-universal-docker-setup/run index 8138cbb..835a264 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-universal-docker-setup/run +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-universal-docker-setup/run @@ -2,10 +2,15 @@ echo "**** installing docker and docker compose ****" ARCH=$(uname -m) -if [ -d "/docker-bins" ] ; then +if [[ "${ARCH}" = "armv7l" ]]; then + echo "**** The universal docker mod no longer supports arm32v7/armhf per https://info.linuxserver.io/issues/2023-07-01-armhf/ ****" + exit 0 +fi +if [[ -d "/docker-bins" ]] ; then echo "Copying over docker and docker-compose binaries" mkdir -p /usr/local/lib/docker/cli-plugins mv "/docker-bins/docker-compose_${ARCH}" /usr/local/lib/docker/cli-plugins/docker-compose + mv "/docker-bins/buildx_${ARCH}" /usr/local/lib/docker/cli-plugins/docker-buildx mv "/docker-bins/docker_${ARCH}" /usr/local/bin/docker mv "/docker-bins/compose-switch_${ARCH}" /usr/local/bin/docker-compose rm -rf /docker-bins @@ -13,19 +18,19 @@ else echo "**** docker and docker-compose already installed, skipping ****" fi -if [ -S /var/run/docker.sock ]; then +if [[ -S /var/run/docker.sock ]]; then DOCKER_GID=$(stat -c '%g' "/var/run/docker.sock") if id -G abc | grep -qw "$DOCKER_GID"; then exit 0 else DOCKER_NAME=$(getent group "${DOCKER_GID}" | awk -F: '{print $1}') - if [ -z "${DOCKER_NAME}" ]; then + if [[ -z "${DOCKER_NAME}" ]]; then DOCKER_NAME="dockergroup" groupadd -g "${DOCKER_GID}" "${DOCKER_NAME}" fi usermod -aG "${DOCKER_NAME}" abc fi -elif [ -n "$DOCKER_HOST" ]; then +elif [[ -n "$DOCKER_HOST" ]]; then echo "**** Remote docker service $DOCKER_HOST will be used ****" else echo "**** Please map /var/run/docker.sock for access to docker service on host. Alternatively you can manually define a remote host address with the docker cli option -H ****" From a9de8b2d3015a51f255e4d786b8ff5dd23c547e6 Mon Sep 17 00:00:00 2001 From: aptalca <541623+aptalca@users.noreply.github.com> Date: Mon, 7 Aug 2023 13:25:40 -0400 Subject: [PATCH 2/3] bring in line with dind mod --- Dockerfile | 4 ++-- .../s6-overlay/s6-rc.d/init-mod-universal-docker-setup/run | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 29d9a99..aa1786b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -67,10 +67,10 @@ RUN \ fi && \ echo "**** grab buildx plugin ****" && \ curl -fo \ - /root-layer/docker-bins/buildx_x86_64 -L \ + /root-layer/docker-bins/docker-buildx_x86_64 -L \ "https://github.com/docker/buildx/releases/download/${BUILDX_RELEASE}/buildx-${BUILDX_RELEASE}.linux-amd64" && \ curl -fo \ - /root-layer/docker-bins/buildx_aarch64 -L \ + /root-layer/docker-bins/docker-buildx_aarch64 -L \ "https://github.com/docker/buildx/releases/download/${BUILDX_RELEASE}/buildx-${BUILDX_RELEASE}.linux-arm64" && \ chmod +x /root-layer/docker-bins/* && \ rm -rf /tmp/* diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-universal-docker-setup/run b/root/etc/s6-overlay/s6-rc.d/init-mod-universal-docker-setup/run index 835a264..0cee12c 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-universal-docker-setup/run +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-universal-docker-setup/run @@ -10,7 +10,7 @@ if [[ -d "/docker-bins" ]] ; then echo "Copying over docker and docker-compose binaries" mkdir -p /usr/local/lib/docker/cli-plugins mv "/docker-bins/docker-compose_${ARCH}" /usr/local/lib/docker/cli-plugins/docker-compose - mv "/docker-bins/buildx_${ARCH}" /usr/local/lib/docker/cli-plugins/docker-buildx + mv "/docker-bins/docker-buildx_${ARCH}" /usr/local/lib/docker/cli-plugins/docker-buildx mv "/docker-bins/docker_${ARCH}" /usr/local/bin/docker mv "/docker-bins/compose-switch_${ARCH}" /usr/local/bin/docker-compose rm -rf /docker-bins From 098df9326797445892ed1e8d946517c46ead4393 Mon Sep 17 00:00:00 2001 From: aptalca <541623+aptalca@users.noreply.github.com> Date: Mon, 7 Aug 2023 14:10:42 -0400 Subject: [PATCH 3/3] remove unnecessary build packages --- Dockerfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index aa1786b..7ed7b62 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,10 +5,6 @@ FROM ghcr.io/linuxserver/baseimage-alpine:3.17 as buildstage ARG MOD_VERSION RUN \ - echo "**** install packages ****" && \ - apk add --no-cache \ - git \ - go && \ echo "**** retrieve latest version ****" && \ if [[ -z "${MOD_VERSION+x}" ]]; then \ DOCKER_RELEASE=$(curl -sX GET "https://api.github.com/repos/moby/moby/releases/latest" \