Difference between revisions of "Docker install"

From UVOO Tech Wiki
Jump to navigation Jump to search
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
# Compose
+
# Install
```
 
curl -LO https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64 && chmod +x docker-compose-linux-x86_64 && sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
 
```
 
  
# Ubuntu
+
## Ubuntu Docker-CE Install using zfs for data mount
 
```
 
```
 
#!/bin/bash
 
#!/bin/bash
set -eu
 
sudo apt-get update
 
sudo apt-get -y install ca-certificates curl gnupg
 
  
sudo install -m 0755 -d /etc/apt/keyrings
+
set -e
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
+
 
sudo chmod a+r /etc/apt/keyrings/docker.gpg
+
DATASET_NAME="tank-nvme/docker"
 +
DOCKER_DIR="/var/lib/docker"
  
echo \
+
if ! sudo zfs list "${DATASET_NAME%%/*}" &>/dev/null; then
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
+
    echo "Error: ZFS pool '${DATASET_NAME%%/*}' does not exist." >&2
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
+
    exit 1
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
+
fi
  
sudo apt-get update
+
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
  
sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-compose
+
# 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
  
sudo docker run hello-world
+
# 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
  
  
# Debian
 
```
 
 
sudo apt-get update
 
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
+
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 install -m 0755 -d /etc/apt/keyrings
+
sudo mkdir -p "$DOCKER_DIR"
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
 
sudo chmod a+r /etc/apt/keyrings/docker.gpg
 
  
echo \
+
if ! mountpoint -q "$DOCKER_DIR"; then
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
+
    sudo mount -t zfs "$DATASET_NAME" "$DOCKER_DIR"
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
+
fi
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/nul
 
  
sudo apt-get update
+
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 apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
+
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
 
sudo docker run hello-world
 
```
 
```

Latest revision as of 23:10, 19 June 2026

Install

Ubuntu Docker-CE Install using zfs for data mount

#!/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