install_docker.sh
· 1.5 KiB · Bash
Sin formato
#!/usr/bin/env bash
set -euo pipefail
export DEBIAN_FRONTEND=noninteractive
# -------- helpers --------
retry() {
local cmd="$1"
local what="$2"
until eval "$cmd"; do
echo "$what failed, retrying in 5 seconds…"
sleep 5
done
}
# -------- remove any old Docker bits --------
retry "apt-get remove -y docker.io docker-doc docker-compose containerd runc || true" "apt-get remove"
# -------- base package refresh --------
retry "apt-get update -y" "apt-get update"
retry "apt-get install -y apt-transport-https ca-certificates curl software-properties-common" \
"install prerequisites"
# -------- add Docker repo & key --------
if [[ ! -f /usr/share/keyrings/docker-archive-keyring.gpg ]]; then
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
fi
lsb_release -cs | read -r codename
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/ubuntu ${codename} stable" \
> /etc/apt/sources.list.d/docker.list
retry "apt-get update -y" "apt-get update (Docker repo)"
# -------- install Docker engine & plugins --------
retry "apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin" \
"install Docker"
# -------- enable & start --------
systemctl enable --now docker
# -------- quick validation --------
docker run --rm hello-world
echo "✅ Docker installed and working."
| 1 | #!/usr/bin/env bash |
| 2 | set -euo pipefail |
| 3 | |
| 4 | export DEBIAN_FRONTEND=noninteractive |
| 5 | |
| 6 | # -------- helpers -------- |
| 7 | retry() { |
| 8 | local cmd="$1" |
| 9 | local what="$2" |
| 10 | until eval "$cmd"; do |
| 11 | echo "$what failed, retrying in 5 seconds…" |
| 12 | sleep 5 |
| 13 | done |
| 14 | } |
| 15 | |
| 16 | # -------- remove any old Docker bits -------- |
| 17 | retry "apt-get remove -y docker.io docker-doc docker-compose containerd runc || true" "apt-get remove" |
| 18 | |
| 19 | # -------- base package refresh -------- |
| 20 | retry "apt-get update -y" "apt-get update" |
| 21 | retry "apt-get install -y apt-transport-https ca-certificates curl software-properties-common" \ |
| 22 | "install prerequisites" |
| 23 | |
| 24 | # -------- add Docker repo & key -------- |
| 25 | if [[ ! -f /usr/share/keyrings/docker-archive-keyring.gpg ]]; then |
| 26 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg \ |
| 27 | | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg |
| 28 | fi |
| 29 | |
| 30 | lsb_release -cs | read -r codename |
| 31 | echo \ |
| 32 | "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \ |
| 33 | https://download.docker.com/linux/ubuntu ${codename} stable" \ |
| 34 | > /etc/apt/sources.list.d/docker.list |
| 35 | |
| 36 | retry "apt-get update -y" "apt-get update (Docker repo)" |
| 37 | |
| 38 | # -------- install Docker engine & plugins -------- |
| 39 | retry "apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin" \ |
| 40 | "install Docker" |
| 41 | |
| 42 | # -------- enable & start -------- |
| 43 | systemctl enable --now docker |
| 44 | |
| 45 | # -------- quick validation -------- |
| 46 | docker run --rm hello-world |
| 47 | echo "✅ Docker installed and working." |
| 48 |