프로그래밍/Bash Shell Script
[Bash Shell Script] docker 제거 스크립트
Grandamines
2024. 11. 14. 01:15
※ Windows 11 Home 환경에서 실행하였습니다.
※ WSL2 Ubuntu 24.04 환경에서 실행하였습니다.
docker 설치 스크립트로 설치한 docker를 제거하는 스크립트입니다.
1. vim 또는 vi로 파일 생성
vim docker.uninstall
2. 스크립트 코드 작성
#!/bin/bash
# @(#)docker.uninstall
# 경고 메시지 출력
echo "⚠️ This action will permanently delete all Docker resources and uninstall Docker completely."
echo "Please back up any necessary data before proceeding!"
read -p "Do you want to continue? (y/yes): " user_input
# 사용자 입력 확인 (소문자로 변환 후 비교)
user_input=$(echo "$user_input" | tr '[:upper:]' '[:lower:]')
if [[ "$user_input" != "y" && "$user_input" != "yes" ]]; then
echo "Operation cancelled by the user."
exit 0
fi
# 도커가 설치되어 있는지 확인
if ! command -v docker &> /dev/null; then
echo "Docker is not installed or not in the PATH. Skipping resource cleanup."
exit 1
fi
# 실행 중인 모든 컨테이너 중지
echo "Stopping all running containers..."
if docker ps -q | xargs -r docker stop; then
echo "All running containers have been stopped."
else
echo "Failed to stop containers. Exiting..."
exit 1
fi
# 모든 컨테이너 삭제
echo "Removing all containers..."
if docker ps -aq | xargs -r docker rm; then
echo "All containers have been removed."
else
echo "Failed to remove containers. Exiting..."
exit 1
fi
# 모든 이미지 삭제
echo "Removing all Docker images..."
if docker images -q | xargs -r docker rmi -f; then
echo "All Docker images have been removed."
else
echo "Failed to remove images. Exiting..."
exit 1
fi
# 사용자 정의 네트워크 삭제
echo "Removing custom networks..."
if docker network ls --filter "type=custom" -q | xargs -r docker network rm; then
echo "All custom networks have been removed."
else
echo "Failed to remove networks. Exiting..."
exit 1
fi
# 모든 볼륨 삭제
echo "Removing all Docker volumes..."
if docker volume ls -q | xargs -r docker volume rm; then
echo "All Docker volumes have been removed."
else
echo "Failed to remove volumes. Exiting..."
exit 1
fi
# 도커 패키지 삭제
echo "Uninstalling Docker packages..."
if sudo apt-get purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras && \
sudo apt autoremove -y; then
echo "Docker packages have been uninstalled."
else
echo "Failed to uninstall Docker packages. Exiting..."
exit 1
fi
# /var/lib/docker 마운트 상태 확인 및 해제
if mount | grep -q '/var/lib/docker'; then
echo "Unmounting /var/lib/docker..."
if sudo umount /var/lib/docker; then
echo "/var/lib/docker has been unmounted."
else
echo "Failed to unmount /var/lib/docker. Exiting..."
exit 1
fi
fi
# 도커 데이터 삭제
echo "Removing Docker data directories..."
if sudo rm -rf /var/lib/docker && sudo rm -rf /var/lib/containerd; then
echo "Docker data directories have been removed."
else
echo "Failed to remove Docker data directories. Exiting..."
exit 1
fi
# GPG 키 삭제
echo "Removing Docker GPG key..."
if sudo rm -rf /etc/apt/keyrings/docker.asc; then
echo "Docker GPG key has been removed."
else
echo "Failed to remove Docker GPG key."
exit 1
fi
# APT 소스 리스트 삭제
echo "Removing Docker APT source list..."
if sudo rm -rf /etc/apt/sources.list.d/docker.list; then
echo "Docker APT source list has been removed."
else
echo "Failed to remove Docker APT source list."
exit 1
fi
# 완료 메시지
echo "Docker and all related resources have been completely removed from the system."
3. 스크립트 저장
:wq
4. 스크립트 실행 권한 설정
sudo chmod +x docker.uninstall
5. 스크립트 실행
./docker.uninstall
6. 결과 확인
⚠️ This action will permanently delete all Docker resources and uninstall Docker completely.
Please back up any necessary data before proceeding!
Do you want to continue? (y/yes): y
Docker and all related resources have been completely removed from the system.
root@비공개:/any-dir# docker
-bash: /usr/bin/docker: No such file or directory