Ubuntu에서 Docker Engine + Docker Compose Plugin 한방 설치하기 (공식 APT 저장소 방식)
Ubuntu에 도커 설치할 때, 그냥 apt install docker로 끝내면 버전이 오래되거나 패키지가 달라서 삽질 나는 경우 많음.
그래서 공식 저장소(repo) 붙여서 docker-ce + docker-compose-plugin 조합으로 설치하는 게 정석임.
1) 그대로 복붙 가능한 설치 명령어
아래 한 줄은 “키링 디렉토리 준비 → 도커 GPG 키 저장 → 도커 저장소 추가 → 업데이트 → 도커 설치” 순서로 진행됨.
sudo apt-get update -qqy && \
sudo apt-get install ca-certificates curl -qqy && \
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 && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null && \
sudo apt-get update -qqy && \
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -qqy
포인트
-qqy: 설치 로그를 조용히 하고(quiet), 중간 질문은 자동 yes 처리함/etc/apt/keyrings: 요즘 권장되는 키 관리 방식(예전의apt-key지양 흐름)signed-by=...: “이 저장소는 이 키로 서명된 것만 신뢰” 하겠다는 의미임
2) 설치가 제대로 됐는지 확인하는 방법
버전 확인부터 찍어보면 됨.
docker --version
docker compose version
그리고 가장 확실한 테스트는 hello-world 컨테이너 실행임.
sudo docker run --rm hello-world
3) sudo 없이 docker 쓰고 싶으면 (권장 설정)
매번 sudo 치기 귀찮으면 도커 그룹에 유저를 추가하면 됨. (보안적으로는 “루트급 권한”이랑 비슷하다고 보는 게 맞음)
sudo usermod -aG docker $USER
newgrp docker
docker ps
newgrp로 현재 세션에 반영하거나, 그냥 로그아웃/로그인 다시 하면 적용됨.
4) 자주 터지는 에러/이슈 체크
- GPG 키 관련 에러:
/etc/apt/keyrings/docker.asc권한이 읽기 가능해야 함 →chmod a+r가 그래서 들어간 거임
- Release file / codename 문제:
- 저장소 줄에 들어가는
$VERSION_CODENAME이 현재 Ubuntu랑 안 맞으면apt-get update에서 터질 수 있음 cat /etc/os-release로 codename 먼저 확인해보면 깔끔함
- 저장소 줄에 들어가는
- compose가 안 뜸:
- 요즘은
docker-compose가 아니라docker compose(띄어쓰기) 방식이 기본임 docker-compose-plugin설치가 포함되어야 함
- 요즘은
5) (옵션) buildx 플러그인도 같이 설치하려면
멀티아키 빌드 같은 거 할 거면 buildx도 같이 깔아두는 편임. 필요할 때 아래만 추가로 설치하면 됨.
sudo apt-get update -qqy
sudo apt-get install docker-buildx-plugin -qqy
끝. 이 방식은 Docker 공식 문서에서 안내하는 “Repository로 설치” 플로우 그대로라서, 운영/서버 환경에서 제일 무난함.
Was this helpful?
0 / 0