시스템 업데이트
sudo apt update
- sudo : 관리자 권한으로 실행
- apt update : 최신 패키지 업데이트
사전 필수 패키지 설치
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
패키지
- ca-certificates : 서버가 HTTPS 통신할 때 필요한 공인 인증서들을 모아둔 패키지. 인증된 사이트(예: Docker 저장소)에 안전하게 연결하기 위해 필요.
- curl: 명령어로 인터넷 서버에서 파일을 다운로드하거나 요청을 보낼 수 있는 툴. Docker GPG 키나 설치 스크립트를 다운로드할 때 사용.
- gnupg: 소프트웨어 설치 시 신뢰할 수 있는지 검증하는 "전자 서명" 기능을 제공하는 툴. Docker GPG 키를 확인하고 인증하는 데 필요해.
- lsb-release: 서버가 어떤 리눅스 배포판 버전인지 (Ubuntu 22.04, 등)을 알려주는 유틸리티. Docker 저장소를 설정할 때 리눅스 버전을 자동으로 가져올 때 필요
- software-properties-common: APT 저장소를 쉽게 추가하거나 관리하는 명령어(add-apt-repository)를 제공해. Docker 저장소 등록이나 PPA 추가할 때 사용
패키지가 설치되어있는지 확인하는 명령어
dpkg -l | grep [패키지명]
Docker 공식 GPG 키 다운로드
sudo mkdir -p /etc/apt/keys
- -p : 디렉터리가 이미 존재해도 에러 없이 넘어감
curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
: curl -fsSL
- Docker GPG 키를 다운로드한다.
- f (실패 시 메시지 표시)
- s (출력 메시지 숨김)
- L (리다이렉트를 따라가서 다운로드)
: sudo gpg --dearmor
- 다운로드한 GPG키를 다운로드 한 GPG 키를 바이너리 형식으로 변환
: -o /usr/share/keystrings/docker-archive-keyring.gpg
- GPG 키를 저장할 경로를 지정함
GPG키란?
- "파일이 신뢰할 수 있는 출처인지" 확인하는 전자 서명
- 소프트웨어를 다운로드할 때, 해커가 조작한 파일이 아닌지 검증할 때 사용한다.
- Docker 설치 시 GPG 키로 패키지의 무결성과 진짜 여부를 확인한다.
Docker 저장소 추가
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] <https://download.docker.com/linux/ubuntu> $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- dpkg --print-architecture: 시스템 아키텍처(예: amd64)를 가져온다
- signed-by : 위에서 다운 받은 GPG 키 지정
- lsb_release -cs : 배포판 코드네임(예: jammy)을 가져온다.
다시한번 패키지 목록 업데이트
sudo apt update
Docker, Docker compose 설치
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- docker-ce : Docker 엔진 (Community Edition). 컨테이너를 생성, 실행, 관리하는 핵심 서버 컴포넌트
- docker-ce-cli: Docker CLI (Command Line Interface). docker run, docker ps 같은 명령어를 제공하는 커맨드 라인 도구
- containerd.io: Docker 내부에서 컨테이너를 실제로 실행시키는 저수준 런타임. 독립 실행 가능하며 Kubernetes에서도 사용된다.
- docker-buildx-plugin: 다양한 플랫폼(arm64, amd64 등)과 고급 빌드를 지원하는 Docker 빌드 플러그인. docker buildx build 명령어를 사용 가능하게 한다.
- docker-compose-plugin: 여러 컨테이너를 정의하고 함께 실행할 수 있게 해주는 Compose 기능을 Docker CLI에 통합한 플러그인. docker compose 명령어 제공