Docker install

From UVOO Tech Wiki
Revision as of 23:07, 19 June 2026 by Busk (talk | contribs)
Jump to navigation Jump to search

!/bin/bash

set -e

DATASET_NAME="tank-nvme/docker" DOCKER_DIR="/var/lib/docker"

if ! sudo zfs list "${DATASET_NAME%%/}" &>/dev/null; then

   echo "Error: ZFS pool '${DATASET_NAME%%/}' does not exist." >&2
   exit 1

fi

if sudo zfs list "$DATASET_NAME" &>/dev/null; then

   echo "ZFS dataset $DATASET_NAME already exists."

else

   sudo zfs create -o mountpoint=legacy "$DATASET_NAME"

fi

Add Docker's official GPG key:

sudo apt update sudo apt install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc

Add the repository to Apt sources:

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF Types: deb URIs: https://download.docker.com/linux/ubuntu Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") Components: stable Architectures: $(dpkg --print-architecture) Signed-By: /etc/apt/keyrings/docker.asc EOF

sudo apt update

sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo systemctl stop docker sudo systemctl stop docker.socket

sudo mkdir -p "$DOCKER_DIR"

if ! mountpoint -q "$DOCKER_DIR"; then

   sudo mount -t zfs "$DATASET_NAME" "$DOCKER_DIR"

fi

if ! grep -q "$DATASET_NAME" /etc/fstab; then

   echo "$DATASET_NAME $DOCKER_DIR zfs defaults 0 0" | sudo tee -a /etc/fstab > /dev/null

fi

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json > /dev/null <<EOF {

 "storage-driver": "zfs"

} EOF

sudo systemctl start docker sleep 5 sudo docker run hello-world ```