Browse Source

moved from docker repo

Toastie 1 year ago
parent
commit
9d1a612e19
1 changed files with 72 additions and 0 deletions
  1. 72 0
      install_docker.sh

+ 72 - 0
install_docker.sh

@@ -0,0 +1,72 @@
+## Install Docker
+# https://docs.docker.com/engine/install/debian/
+
+sudo -i
+
+# Install dependencies
+apt-get update && apt-get install --yes \
+    ca-certificates \
+    curl \
+    gnupg \
+    lsb-release
+
+# Add trust and docker apt repo
+mkdir -m 0755 -p /etc/apt/keyrings
+curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
+echo \
+  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
+  $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
+
+# Install docker
+apt-get update && apt-get install --yes \
+    docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
+
+# allow admin to use the docker command
+usermod --append --groups docker admin 
+
+#----------
+# 1) Setup journald as log driver so we don't need to care separetly for log rotation
+#
+# 2) Change Docker Address pools
+# Docker default address address pools:
+# Vanilla
+#    172.17.0.0/12 split in /16 (size) =>  16 networks each 65536 hosts
+#   192.168.0.0/16 split in /24 (size) => 256 networks each   256 hosts
+#   More details: # https://straz.to/2021-09-08-docker-address-pools/
+# Reasons to change
+#   - Short: The configuration is not suitable for our home server
+#   - 192.168.0.0/16 is frequently used in the home environment 
+#   - 172.17.0.0/12 size doesn't offer enough networks and we never have that many hosts
+# Resulting configuraiton
+#    172.16.0.0/12 split in /22 (size) => 1024 networks each 1024 hosts
+#    nnnn nnnn . nnnn NNNN . NNNN NNhh . hhhh hhhh 
+#                  12     2^10    22    2^10    32
+# But, we start with 172.18.0.0 and
+# (1)   leave 172.16.0.0/16 untouched
+# (2.1) assign 172.17.0.0/22 to the default bridge
+# (2.2) use the remaing networks for special purposes 172.17.4.0, 172.17.8.0, 172.17.12.0, ...
+# => (1)+(2) takes each 64 /22-networks, resulting in 896 networks (1024-128)
+#
+# Tools: https://www.site24x7.com/tools/ipv4-subnetcalculator.html
+# Reference: RFC 1918 name: 172.16.0.0 - 172.31.255.255
+#
+# Check configuration: docker info | grep Base
+# Check configuration: docker network inspect bridge | grep Subnet
+cat >/etc/docker/daemon.json <<EOL
+{
+  "log-driver": "journald",
+  "bip": "172.17.0.1/22",
+  "default-address-pools": [
+    {
+      "base": "172.18.0.0/12",
+      "size": 20
+    }
+  ]
+}
+EOL
+systemctl restart docker.service
+
+# Create directory for docker
+mkdir -p /opt/docker
+
+docker run hello-world