포스트

리눅스/우분투/민트 에서 도커 설치 cli

1) 완전 초기 설치 스크립트 — install_docker_fresh.sh (Mint 자동 감지 → Ubuntu 코드네임 매핑 포함, sudo 없이 사용 가능 설정)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/bin/bash
set -euo pipefail

echo "[i] Docker & Compose fresh installer (Mint/Ubuntu auto-detect)"

# --- Map Mint to Ubuntu codename ---
get_ubuntu_codename() {
  local code=""
  if grep -q '^UBUNTU_CODENAME=' /etc/os-release; then
    code="$(. /etc/os-release && echo "${UBUNTU_CODENAME:-}")"
  fi
  if [[ -z "$code" ]] && grep -q '^ID=linuxmint' /etc/os-release; then
    . /etc/os-release
    case "${VERSION_ID%%.*}" in
      22) code="noble" ;;  # Mint 22.x -> Ubuntu 24.04
      21) code="jammy" ;;  # Mint 21.x -> Ubuntu 22.04
      20) code="focal" ;;  # Mint 20.x -> Ubuntu 20.04
      19) code="bionic" ;; # Mint 19.x -> Ubuntu 18.04
      *)  code="noble" ;;  # default
    esac
  fi
  if [[ -z "$code" ]] && command -v lsb_release >/dev/null 2>&1; then
    local raw="$(lsb_release -cs || true)"
    case "$raw" in
      xia) code="noble" ;; # Mint 22 prints xia
      uma|una|elsie|vera|victoria) code="jammy" ;; # old Mint names -> jammy (best-effort)
      *) code="$raw" ;;
    esac
  fi
  [[ -z "$code" ]] && code="noble"
  echo "$code"
}

UBU_CODE="$(get_ubuntu_codename)"
echo "[i] Using Ubuntu codename: ${UBU_CODE}"

echo "[1/7] Pre-clean old docker entries..."
sudo systemctl stop docker.service docker.socket containerd.service 2>/dev/null || true
sudo rm -f /etc/apt/sources.list.d/docker.list
sudo rm -f /etc/apt/keyrings/docker.gpg

echo "[2/7] Base dependencies..."
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

echo "[3/7] Docker GPG key..."
sudo install -m 0755 -d /etc/apt/keyrings
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

echo "[4/7] Add Docker repo for ${UBU_CODE}..."
ARCH="$(dpkg --print-architecture)"
echo "deb [arch=${ARCH} signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu ${UBU_CODE} stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list >/dev/null

echo "[5/7] Install Docker Engine & Compose..."
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

echo "[6/7] Add current user to 'docker' group..."
if ! getent group docker >/dev/null; then
  sudo groupadd docker
fi
sudo usermod -aG docker "$USER"

echo "[7/7] Versions:"
docker --version || true
docker compose version || true

echo ""
echo "✅ Install done."
echo "➡  Apply group without relogin:  newgrp docker"

1
2
3
4
5
6
7
nano install_docker_fresh.sh
# 위 내용 붙여넣기
chmod +x install_docker_fresh.sh
./install_docker_fresh.sh
# 바로 sudo 없이 쓰려면:
newgrp docker

2) 완전 제거 스크립트 — uninstall_docker_fullwipe.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/bash
set -euo pipefail

echo "[*] Stopping Docker services..."
sudo systemctl stop docker.service docker.socket containerd.service || true

echo "[*] Remove all containers/images/volumes/networks (if docker still works)..."
if command -v docker >/dev/null 2>&1; then
  docker ps -aq | xargs -r docker rm -f || true
  docker images -aq | xargs -r docker rmi -f || true
  docker volume ls -q | xargs -r docker volume rm -f || true
  docker network ls -q | grep -vE '(^| )bridge($| )|(^| )host($| )|(^| )none($| )' | xargs -r docker network rm || true
fi

echo "[*] Purging Docker packages..."
sudo apt purge -y docker-ce docker-ce-cli docker.io containerd runc docker-buildx-plugin docker-compose-plugin || true
sudo apt autoremove -y --purge

echo "[*] Removing data directories..."
sudo rm -rf /var/lib/docker /var/lib/containerd /var/run/docker.sock
sudo rm -rf /etc/docker

echo "[*] Removing repo/keyring/list files..."
sudo rm -f /etc/apt/sources.list.d/docker.list
sudo rm -f /etc/apt/keyrings/docker.gpg

echo "[*] Removing group 'docker' (keeps users intact)..."
sudo groupdel docker 2>/dev/null || true

echo "[*] Clean apt caches..."
sudo apt update

echo "✅ Docker FULL wipe finished."

1
2
3
4
5
nano uninstall_docker_fullwipe.sh
# 위 내용 붙여넣기
chmod +x uninstall_docker_fullwipe.sh
./uninstall_docker_fullwipe.sh

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.