Docker 설치
Docker Ubuntu 설치 가이드
1. Docker의 GPG 키 추가
(1)
sudo apt-get update
- 패키지 리스트를 업데이트하여 최신 정보를 가져온다.
apt-get update는 설치 가능한 패키지 목록을 갱신하는 역할을 한다.
(2)
sudo apt-get install ca-certificates curl
ca-certificates: 인증 기관(CA, Certificate Authority)에서 발급한 SSL/TLS 인증서를 포함하는 패키지로, HTTPS 통신을 안전하게 하기 위해 필요하다.
curl: 파일을 다운로드하거나 웹 요청을 보내는 유틸리티로, 이후 curl을 사용하여 GPG 키를 다운로드할 때 사용된다.
(3)
sudo install -m 0755 -d /etc/apt/keyrings
install 명령어를 사용하여 디렉터리를 생성한다.
-m 0755 옵션은 생성된 디렉토리의 권한을 755(소유자는 읽기/쓰기/실행, 그룹과 기타 사용자들은 읽기/실행만 가능)로 설정한다.
/etc/apt/keyrings/ 디렉터리를 만들어서 GPG 키를 저장하는 위치로 사용한다.
(4)
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
- Docker의 GPG 키를 다운로드하여
/etc/apt/keyrings/docker.asc 파일로 저장한다.
-fsSL 옵션
-f(fail silently): HTTP 요청이 실패하면 오류 메시지를 표시하지 않고 종료.
-s(silent): 진행 상태를 표시하지 않음.
-S(show error): 오류가 발생하면 메시지를 표시.
-L(location): 리디렉션이 있을 경우 따라감.
- GPG 키란?
- 패키지의 무결성을 검증하는 데 사용된다.
- Docker에서 제공하는 패키지가 공식적인 것이며, 중간에 변조되지 않았음을 확인하는 역할을 한다.
(5)
sudo chmod a+r /etc/apt/keyrings/docker.asc
- GPG 키 파일(
/etc/apt/keyrings/docker.asc)에 읽기 권한(모든 사용자에게 읽기 가능)을 부여한다.
a+r → 모든 사용자(a=all)에게 읽기(r=read) 권한 추가.
2. Docker 공식 저장소 추가
(1)
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
dpkg --print-architecture
- 현재 시스템의 CPU 아키텍처를 출력한다.
- 보통 amd64, arm64 같은 값이 반환된다.
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
/etc/os-release 파일에서 Ubuntu의 코드명(codename)을 가져온다.
- 예를 들어, Ubuntu 22.04 LTS는
jammy를 반환한다.
echo "deb [arch=...] ... stable"
- Docker 패키지를 설치할 수 있도록 APT 저장소 정보를 설정한다.
deb [arch=...]는 아키텍처를 지정하는 부분이다.
signed-by=/etc/apt/keyrings/docker.asc는 위에서 다운로드한 GPG 키를 사용하여 패키지를 검증하겠다는 의미이다.
https://download.docker.com/linux/ubuntu는 Docker의 공식 패키지 저장소 URL이다.
stable은 안정적인 버전(Stable Release)만 가져오겠다는 뜻이다.
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
echo 명령어의 출력을 /etc/apt/sources.list.d/docker.list 파일에 저장한다.
- 기존
> 리디렉션 대신 tee를 사용하여 관리자 권한을 유지하면서 파일을 수정할 수 있도록 한다.
> /dev/null은 출력을 화면에 표시하지 않기 위해 사용된다.
3. 패키지 목록 업데이트
(1)
sudo apt-get update
- APT 패키지 관리자가 Docker 저장소를 인식할 수 있도록 패키지 목록을 갱신한다.
4. Docker 설치
(1)
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker-ce (Docker Community Edition)
docker-ce는 Docker의 커뮤니티 에디션(Community Edition, CE)을 의미한다.
- 실행 가능한 Docker 데몬(
dockerd)이 포함된다.
- 기본적으로
systemctl start docker 명령어로 실행된다.
docker-ce-cli (Docker CLI)
docker-ce-cli는 Docker CLI(Command-Line Interface) 도구를 의미한다.
docker 명령어를 실행할 수 있도록 하는 도구
containerd.io (컨테이너 런타임)
containerd.io는 Docker가 컨테이너를 실행하는 데 사용하는 런타임(runtime)을 의미한다.
- Docker 데몬이 컨테이너를 실행할 때 실제 컨테이너를 실행하고 관리하는 역할을 한다.
- 기본적으로
systemctl start containerd 명령어로 실행된다.
docker-buildx-plugin (Docker Buildx)
- 멀티 플랫폼 빌드를 가능하게 해주는 도구
- Docker의 기본
build 기능보다 더 빠르고 효율적인 빌드가 가능하다.
- 특히 ARM과 같은 다른 아키텍처용 컨테이너 이미지를 빌드할 때 유용하다.
docker-compose-plugin (Docker Compose)
- Docker Compose는 여러 개의 컨테이너를 한꺼번에 관리할 수 있도록 해주는 도구이다.
- 예전에는 docker-compose라는 별도 패키지를 설치했지만,
이제는 docker compose 명령어가 Docker에 기본 포함된다.
5. sudo 없이 Docker 실행하기
(1)
sudo usermod -aG docker $(whoami)
(2)
newgrp docker
(3)
docker version