본문 바로가기
IT Security/Docker & Kubernetes

[Docker & Kubernetes] 3. Linux에 Docker 패키지 설치하기

by Rosmary 2022. 5. 8.
728x90
반응형

 

 

 

 

컨테이너를 사용하여 프로세스 격리 및 가상화를 테스트하기 위해, 필자의 테스트 리눅스에 Docker를 설치해보려 한다. 필자가 사용하는 리눅스는 CentOS 7.9 버전이며, VMWare에 최소 설치 프로그램만 사용하여 설치한 리눅스다. Django 등등 별의별 테스트를 진행하면서 이것저것 프로그램이 추가된 상태이긴 하지만 Docker 설치와 크게 연관은 없어 바로 진행하려 한다. 

 

아래의 Docker 설치 절차를 따라하기 전, VM이나 물리 PC에 리눅스 설치를 진행해야한다. 필자가 이 내용은 따로 포스팅하지 않았지만, VM이나 PC에 리눅스를 설치하는 포스팅은 워낙 널리고 널려 있으니 검색한 포스팅으로 설치를 진행해주시면 된다.

 

 

1. Docker 설치 전 확인사항

Docker 역시 이 때까지 필자가 Linux 메뉴에 작성한 포스팅에서 설명한 대부분의 서비스들과 같이 패키지로 설치한다. 

따라서 아래의 내용이 리눅스에서 제대로 동작하는지 먼저 확인이 필요하다.

 

(1) 외부 DNS 서버와의 통신 가능 여부 확인

여러 방법이 있지만 dig나 nslookup 명령어를 사용하여 외부 포털 사이트의 IP 주소를 확인해보자. 참고로 이 작업은 리눅스에 DNS 설정이 되어 있어야한다. DNS 관련 글은 여기를 참고하자.

 

#  명령어: dig {포털 사이트 또는 기타 사이트 URL 주소}

 

 

(2) yum 명령어 사용 가능 여부 확인

 

최소 설치 리눅스로도 yum 명령어를 사용할 수는 있지만 설치 전에 한 번 확인하도록 하자. 만약 yum 명령어를 사용할 수 없다면 rpm 명령어를 사용하여 yum 패키지를 설치하도록 하자. 

 

#  명령어: yum --help

 

*  rpm 관련 포스팅은 아래를 참고하자.

30. Linux - rpm 명령어 기본 사용법1(질의)
31. Linux - rpm 명령어 기본 사용법2(설치/삭제)

 

 

(3) 옛날 docker 패키지의 존재 여부 확인 및 삭제

 

뒤에서 설명하겠지만 docker 패키지는 원래 docker-engine이라는 하나의 패키지만 존재하고 있었다. 따라서 기존 docker-engine 패키지가 존재한다면 현재 버전의 docker는 제대로 설치되지 않으니 반드시 아래 패키지가 삭제되어 있는지 확인하도록 하자. 

 

#  명령어:  yum list docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate

 

 

만약 명령어 결과 중 Installed Packages에 해당하는 항목이 있다면 아래의 명령어로 패키지를 삭제하도록 하자.

#  명령어: yum erase {Installed Packages 목록}

 

여기까지 명령어 입력 결과가 에러가 없이 잘 이루어진다면 다음 단계로 넘어가도록 하자.

 

 

2. Docker 패키지 설치 진행 절차

 

Docker 설치 절차는 root 계정 또는 sudo 사용이 가능한 계정으로 진행한다.

 

(1) 편의상 필요한 패키지 설치

 

Docker 설치 중 또는 설치 후 편의상 필요한 패키지를 설치한다. 필요한 패키지는 아래와 같다.

-  vim

-  vim-common

-  net-tools

-  yum-utils

 

#  명령어: yum install -y vim vim-common net-tools yum-utils

 

에러가 발생하면서 설치가 되지 않는 경우 Linux가 참고하는 DNS 서버가 지정되어 있지 않거나, 해당 DNS로 통신이 진행되지 않는 것일 가능성이 높다. 아래의 두 명령어를 사용하여 결과가 필자의 캡쳐 화면과 동일하게 나오는지 확인하자.


#  명령어 1: cat /etc/resolv.conf    -> IP는 필자와 다르게 지정되어 있을 수 있다.

#  명령어 2: curl -v telnet://{DNS 서버 IP}:53

 

 

 

(2) 모든 패키지 업데이트

#  명령어: yum update -y

 

위의 명령어를 사용하여 리눅스에 설치된 모든 패키지에 대해 업데이트를 진행한다. 업데이트는 패키지 수에 따라 다르지만 대략 700개 정도의 패키지 업데이트에 약 10~15분 정도 소요된다.

 

 

명령어의 마지막에 Complete! 문구가 뜨는지 확인하자. 확인이 되면 다음 단계로 넘어간다.

 

 

(3) Docker 패키지 설치를 위한 yum 저장소 파일 생성

 

리눅스 패키지가 저장되어 있는 저장소(Repository) 주소에서 설치하고자 하는 패키지를 검색하여 있으면 다운로드 + 설치를 하도록 하는 명령어가 바로 yum이다. CentOS 리눅스는 이러한 패키지 저장소에 대한 정보를 /etc/yum.repos/ 폴더에 저장하고 있다.

 

 

우리가 설치할 Docker 패키지는 CentOS의 기본 저장소에 존재하지 않는 패키지다. 따라서 아무리 docker 관련 패키지를 다운로드하려고 yum 명령어를 써봐야, 저장소에 패키지가 없으니 설치가 진행되지 않는다.

 

 

따라서 docker 패키지를 다운로드 받기 위해서 docker 패키지가 위치한 저장소의 정보를 파일로 저장해주어야 한다. 두 가지 방법이 있는데, yum-config-manager 명령어를 사용하여 인터넷에 존재하는 저장소 정보가 작성된 파일을 다운로드 받는 방법, 그리고 수동으로 파일을 생성하는 방법이 있다. 외부로 인터넷이 되는 상황이니 yum-config-manager 명령어를 사용하여 저장소 정보 파일을 저장하도록 하자.

 

#  명령어: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 

명령어 출력 결과의 마지막에 /etc/yum.repos.d/docker-ce.repo 파일이 저장되어 있다는 문구가 나타나면 다음으로 넘어가자.

 

 

 

(4) docker 연관 패키지 설치

이제 docker를 사용하기 위한 패키지를 yum으로 설치하자. 이전의 절차에서 docker 관련 패키지를 설치하기 위해 docker-ce.repo 파일을 생성했기 때문에 패키지 설치는 제대로 진행된다. 설치해야하는 패키지 목록은 아래와 같다.

 

-  docker-ce: docker community edition의 약자다.

-  docker-ce-cli: docker community edition client의 약자다.

-  containerd.io: LXC를 사용하기 위한 컨테이너 패키지이며, containerd.io 패키지는 업계 표준을 따르고 있다.

 

참고로 원래 docker의 경우 docker-engine이라는 하나의 패키지로 설치가 가능했지만, docker 서버 역할을 하는 패키지인 docker-ce와 클라이언트 명령어 정보가 포함된 패키지인 docker-ce-cli로 나뉘게 되었다.

 

아래의 명령어로 docker 관련 패키지 3개를 설치하도록 하자.

 

# 명령어: yum install -y docker-ce docker-ce-cli containerd.io

 

설치가 정상적으로 완료되면 Installed 항목에 docker-ce, docker-ce-cli, containerd.io 가 나타나며, 마지막이 Complete! 문구로 마무리된다.

 

 

3. docker 서비스 정상 동작 확인

 

docker 서비스 파일의 이름은 docker.service다. 이 파일은 docker 관련 패키지가 설치되면 /usr/lib/systemd/system/ 폴더 아래에 위치하게되며, 이 때부터 systemctl로 docker 동작을 실행, 중지, 확인할 수 있다.

 

 

패키지를 설치한 직후 docker 서비스의 상태는 inactive이다. 아래의 명령어로 확인해보자.

 

#  명령어: systemctl status docker

 

서비스 상태는 중단된 상태지만 docker-ce-cli 패키지가 정상 설치되었다면 docker 명령어는 사용이 가능하다. 

 

이제 이 상태에서 docker 서비스를 실행해보자. 

# 명령어: systemctl start docker

 

 

 

docker 서비스가 정상적으로 동작하는 것이 확인되었다. 

만약 서버 재부팅 후에도 docker 서비스를 자동으로 활성화시키고 싶다면 아래의 명령어로 docker 서비스를 활성화해주자.

#  명령어: systemctl enable docker

 

 

 


 

Docker를 사용하기 위한 사전 준비는 끝이 났다. 다음 포스팅에서는 docker 명령어의 기본 사용법에 대해 알아보려 한다.

 

 

 

 

Fin.

반응형

댓글