이번 글에서 도커 엔진을 설치해보도록 하겠습니다.
저는 ubuntu 20.04 LTS를 사용하고 있어서, ubuntu 기준으로 설치하였습니다.
도커 엔진을 설치하기 위해서, 아래 우분투 버전 중의 하나를 만족해야 합니다. 그리고, 도커는 64bit를 권장하고 있습니다.
(32bit 설치가 불가능한 것은 아닙니다.)
도커 엔진은 x86_64(or amd64) / armhf / arm64 아키텍처를 지원합니다.
만약 이전에 도커를 설치한 적이 있다면, 아래 커맨드로 기존 버전을 삭제하고 설치하는 것을 권장합니다.
sudo apt remove docker docker-engine docker.io containerd runc
그리고 기존에 저장된 도커 오브젝트인 images, containers, volumes, network가 필요없다면, '/var/lib/docker/'의 내용도 모두 제거합니다.
1 sudo rm -rf /var/lib/docker
2 sudo rm -rf /var/lib/containerd
우분투의 도커 엔진은 overlay2, aufs, btrfs의 Storage Driver를 지원하며, default로 overlay2를 사용합니다.
이는 필요하다면 수동으로 변경할 수 있습니다.
Storage Driver는 추후에 다시 자세하게 알아보도록 하겠습니다.
도커는 필요에 따라서 다양한 방법으로 설치가 가능합니다.
도커를 처음 설치한다면, 도커를 설치하기 전에 우선 도커 Repository를 셋업해주어야 합니다.
Set up the repository
1. sudo apt update
2. sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
1 echo \
2 "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
3 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
(위 커맨드는 x86_64 / amd64 아키텍처를 위한 커맨드입니다. 다른 아키텍처를 사용하신다면 설치 홈페이지를 참조하시기 바랍니다.)
Install Docker Engine
apt package index를 업데이트하고, 최신 버전의 Docker Engine / Containerd를 설치합니다.
1 sudo apt update
2 sudo apt install docker-ce docker-ce-cli containerd.io
만약 특정 버전을 설치하고 싶다면, 설치 가능한 버전을 확인하고, 설치를 진행합니다.
1 # 가능한 도커 설치 버전 확인
2 apt-cache madison docker-ce
3
4 # 특정 버전 설치(ex, 5:18.09.1~3-0~ubuntu-focal)
5 sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
도커에서 제공하는 패키지 파일을 통해서 설치도 가능합니다.(인터넷이 안될 때 사용할 수 있겠네요)
https://download.docker.com/linux/ubuntu/dists/ 에서 해당하는 ubuntu version을 선택하고, pool/stable/에 들어가서, 해당하는 아키텍처 선택 후에 .deb 파일을 다운로드하고, 아래 커맨드를 통해서 설치합니다.
sudo dpkg -i <package.deb>
설치 스크립트를 사용하여 편리하게 설치할 수도 있습니다.
1 curl -fsSL https://get.docker.com -o get-docker.sh
2 DRY_RUN=1 sh ./get-docker.sh
도커가 잘 설치되었는지 체크해봅시다.
sudo docker run hello-world
docker info
위와 같이 그냥 docker 커맨드만을 사용하면 permission denied로 에러가 발생할 수 있습니다. 이는 권한 이슈로 sudo 명령어로 입력하면 정상적으로 동작합니다. (sudo 명령어없이 사용하려면 5번을 참조하시기 바랍니다.)
sudo docker info
도커를 삭제하는 방법은 다음과 같습니다.
sudo apt purge docker-ce docker-ce-cli containerd.io
1 sudo rm -rf /var/lib/docker
2 sudo rm -rf /var/lib/containerd
도커를 사용할 때에는 docker라는 명령어를 앞에 붙여서 커맨드를 입력하여 사용합니다.
컨테이너 및 이미지를 다루는 명령어는 /usr/bin/docker에서 실행되지만, 도커 엔진의 프로세스는 /usr/bin/dockerd 파일(Docker Daemon)에서 실행됩니다.
도커 데몬은 기본적으로 unix socket 기반이며, unix socket은 root 권한으로만 접근이 가능하므로, 도커 데몬은 항상 루트 권한으로 실행되어야 합니다. 즉, sudo 명령어를 붙여주어야 합니다.
(리눅스에 대해서 깊이 알지 못하다 보니 unix socket에 대해서 자세히 알지는 못합니다 ㅠ)
만약 docker 커맨드에 sudo 명령어를 생략하여 사용하고 싶다면, docker라는 Unix Group을 만들어서 users를 docker 그룹에 추가해주어야 합니다. (아래 링크 참조)
link : https://docs.docker.com/engine/install/linux-postinstall/
간단하게 아래 커맨드를 입력하고, 재부팅하면 됩니다.
sudo groupadd docker
sudo usermod -aG docker $USER