Docker는 소프트웨어 엔지니어링 업계에 큰 변화를 가져온 도구입니다. 소프트웨어를 배포하고 출시하는 방식을 혁신했을 뿐만 아니라, 엔지니어들이 자신의 컴퓨터에서 개발 환경을 구축하는 방식 자체도 바꾸어 놓았습니다.
이 가이드에서는 Ubuntu Linux 20.04(Focal Fossa)에 Docker를 설치하여 시작하는 방법을 안내합니다. Ubuntu 20.04는 이 글을 작성하는 시점 기준 최신 LTS(Long Term Support) 버전입니다.
Docker의 장점
Docker는 애플리케이션을 '컨테이너'라고 불리는 독립적인 패키지 형태로 자동화하여 배포할 수 있게 해주는 오픈소스 플랫폼입니다. Docker는 운영체제 수준의 가상화 기술을 사용하지만, 가상 머신(VM)과 달리 시스템 리소스를 훨씬 적게 사용한다는 점이 큰 차이점입니다.
Docker의 주요 장점은 다음과 같습니다.
- 비교적 배우기 쉽고 사용하기 간편함
- 일관성 있고 간편한 소프트웨어 배포 방식 제공
- 마이크로서비스 아키텍처와 뛰어난 호환성
- 매우 가벼운 리소스 사용량
Docker 소프트웨어 저장소 설정하기
Docker를 설치하는 방법은 여러 가지가 있지만, 이 가이드에서는 apt 명령어 유틸리티를 사용해 Docker 공식 저장소에서 설치하는 방법을 다룹니다. 이 방식으로 설치하면 나중에 Docker 패키지를 손쉽게 업그레이드할 수 있으며, Docker 개발팀에서도 권장하는 설치 방법입니다.
설치의 첫 번째 단계는 Docker 소프트웨어 저장소를 소프트웨어 소스 목록에 추가하는 것입니다. HTTPS를 통해 Docker 저장소를 사용하며, 아래 명령어로 필요한 패키지들을 설치합니다.
먼저, 사용 가능한 소프트웨어 패키지 목록을 업데이트하는 것이 좋습니다.
sudo apt update
다음으로, apt install 명령어를 사용해 설치에 필요한 의존성 패키지들을 다운로드합니다.
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
Docker는 저장소에서 소프트웨어 패키지를 다운로드할 때 통신 보안을 위해 GnuPG(GPG)를 사용합니다. GPG는 메시지나 데이터를 암호화하는 데 사용되는 PGP(Pretty Good Privacy)의 구현 표준입니다.
아래 명령어를 실행하면 Docker 공식 GPG 키를 로컬 키링에 추가할 수 있습니다.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Docker 저장소에는 세 가지 주요 릴리스 버전이 있습니다. 안정(stable) 버전, 테스트(test) 버전, 그리고 나이틀리(nightly) 버전입니다. 이 가이드에서는 안정 버전을 기준으로 설명합니다.
아래 명령어를 실행하면 Docker의 안정 버전 저장소를 사용하도록 설정됩니다.
echo "deb [arch=amd64 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
참고: 위 명령어는 AMD 아키텍처를 사용한다고 가정합니다. ARM 아키텍처를 사용 중이라면 명령어의 arch=amd64 부분을 arch=arm64로, ARM hard float를 사용한다면 arch=armhf로 변경하세요.
Docker 엔진 설치하기
Docker 저장소 설정이 완료되었으니 이제 Docker 컨테이너를 관리하고 실행하는 핵심인 Docker 엔진을 설치할 차례입니다. Docker 엔진을 구성하는 다른 중요한 구성 요소로는 Docker Client, containerd, runc, Docker 데몬 등이 있습니다.
최근에 Docker 저장소를 소프트웨어 소스 목록에 추가했기 때문에, 아래 명령어로 패키지 소스를 먼저 업데이트해야 합니다.
sudo apt update
다음 명령어를 실행하면 Docker 엔진이 설치됩니다. 기본적으로 최신 안정 버전의 Docker 엔진이 설치됩니다.
sudo apt-get install docker-ce docker-ce-cli containerd.io
특정 버전의 Docker를 설치하고 싶다면, 먼저 아래 명령어로 설치 가능한 버전 목록을 확인하세요.
apt-cache madison docker-ce
버전 목록을 확인한 후, 다음 명령어 형식으로 원하는 특정 버전을 설치할 수 있습니다. 예를 들어 5:20.10.6~3-0~ubuntu-focal 버전을 설치하려면:
sudo apt-get install docker-ce=5:20.10.6~3-0~ubuntu-focal docker-ce-cli=5:20.10.6~3-0~ubuntu-focal containerd.io
설치 확인하기
Docker가 성공적으로 설치되었는지 확인하려면 아래 명령어를 실행하세요. 설치된 Docker 엔진의 버전 번호가 출력됩니다.
docker -v
Ubuntu Linux를 비롯한 대부분의 Debian 계열 배포판에서는 Docker 서비스가 시스템 부팅 시 자동으로 시작됩니다.
hello-world Docker 이미지를 실행하여 설치를 테스트해 볼 수 있습니다. 이 이미지는 로컬 컴퓨터에 없기 때문에, 시스템이 컨테이너 이미지 라이브러리인 Docker Hub에서 자동으로 다운로드합니다. 다음부터 같은 이미지를 실행하면 PC에 저장된 로컬 복사본을 사용하게 됩니다.
sudo docker run hello-world
루트 권한 없이 Docker 실행하기
현재 상태에서는 슈퍼유저(superuser)만 Docker 컨테이너를 실행할 수 있기 때문에 위 명령어들에서 sudo를 사용했습니다. Docker 데몬은 Unix 소켓에 바인딩되는데, 이 소켓은 기본적으로 root 사용자가 소유하고 있어 일반 사용자는 sudo를 통해서만 접근할 수 있습니다.
슈퍼유저 권한 없이 Docker 컨테이너와 주요 명령어를 실행하려면, 먼저 docker라는 이름의 사용자 그룹을 생성한 후 자신의 계정을 해당 그룹에 추가해야 합니다. Linux에서 groupadd 명령어는 사용자 그룹을 관리하는 역할을 담당합니다.
sudo groupadd docker
sudo usermod -aG docker $USER
아래 명령어를 사용하면 그룹 변경 사항이 즉시 활성화됩니다.
newgrp docker
참고: 시스템이 새로 생성된 그룹 멤버십을 인식하도록 로그아웃 후 다시 로그인해야 합니다. 로그아웃은 다음 명령어로 할 수 있습니다.
gnome-session-quit
간혹 일반 사용자 권한으로도 Docker 명령어를 실행할 수 없는 경우가 있는데, 이럴 때는 시스템을 재부팅하면 해결되는 경우가 많습니다.
Docker 제거하기
Ubuntu Linux에서 Docker 엔진을 삭제하거나 제거하려면 아래 명령어를 실행하면 됩니다.
sudo apt remove docker docker-engine docker.io containerd runc
Docker 엔진이 제거되더라도 이미지, 컨테이너, 볼륨, 사용자 지정 구성 파일 등 Docker와 관련된 다른 파일들은 자동으로 삭제되지 않습니다. 이러한 파일들은 rm 유틸리티를 사용해 직접 삭제해야 합니다.
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
실무에서의 Docker 활용
이 가이드에서는 Ubuntu Linux에 Docker를 설치하고 구성하는 방법을 살펴보았습니다. 또한 Docker Hub에서 가져온 간단한 Docker 이미지를 실행하는 방법도 함께 알아보았습니다.
Docker는 매우 유연하고 다재다능한 도구로, 소프트웨어 엔지니어링 분야에서 활용 사례가 무궁무진합니다. 소프트웨어 엔지니어나 DevOps 종사자라면 Docker를 통해 다양한 환경에서 소프트웨어를 배포하는 과정을 크게 단순화할 수 있으며, 소프트웨어 테스트 및 프로토타이핑 작업에도 매우 유용합니다.