도커(Docker)
도커(Docker)는 컨테이너라 부르는 가상 머신과 유사한 격리된 공간을 제공하여 여러 프로그램들의 관리를 간략화시켜주는 응용프로그램입니다. 호스트(서버)에 직접 응용프로그램을 설치하는 것과의 차이라면 누군가 설치 후 사용하기 편하도록 설정까지 마친 이미지를 이용하기 때문에 설치가 간략하며 명령어를 사용하여 해당한 환경을 쉽고 단순하게 복제하여 여러 다른 서버에 동일한 환경을 재현할 수 있다는 점입니다.
NAS 혹은 서버를 구축하여 사용하는 입장에서는 NAS에 서비스를 제공할 각종 응용프로그램을 좀 더 쉽게 설치하고 관리할 수 있게 해주는 도구라고 생각하면 됩니다.
Docker 설치
※ Docker의 공식 설치 가이드를 참고하였습니다.
- 저장소 정보를 갱신한 후, Docker 설치에 필요한 관련 패키지를 설치합니다.
sudo apt update
sudo apt upgrade -y
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common -y
- 도커 패키지의 인증을 위한 GPG Key를 추가합니다.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- Docker 저장소를 APT 소스로 추가합니다.
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
- 패키지 데이터 베이스를 다시 갱신합니다.
sudo apt update
- 우분투 저장소가 아닌 도커 저장소에서 도커를 설치하도록 설정합니다.
apt-cache policy docker-ce
실행결과는 다음과 같습니다. Docker의 버전 정보는 실행 시점에 따라 다릅니다.
docker-ce:
Installed: (none)
Candidate: 5:19.03.12~3-0~ubuntu-focal
Version table:
5:19.03.12~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
5:19.03.11~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
5:19.03.10~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
5:19.03.9~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
docker-ce
가 아직 설치되어 있지 않다는 것과 설치를 한다면 Docker 저장소에서 설치할 것이라는 내용이 표시됩니다.
- 마지막으로 Docker를 설치합니다.
sudo apt install docker-ce -y
- 설치된 도커의 상태는 다음 명령을 이용하여 확인합니다.
sudo systemctl status docker
아래와 같은 시스템 메시지가 출력됩니다.
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-09-06 08:19:16 UTC; 40s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 5671 (dockerd)
Tasks: 10
Memory: 44.4M
CGroup: /system.slice/docker.service
└─5671 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
q
를 눌러 상태 표시를 종료합니다.
포테이너(Portainer)
Portainer(이하, 포테이너)는 도커를 웹으로 관리할 수 있는 도구입니다. 서버 또는 가상 머신에 SSH로 접속하여 Docker 명령을 칠 필요 없이, 웹 UI로 도커를 운영할 수 있습니다.
※ Docker 이미지를 동시에 사용할 때 그 구성을 쉽게 도와주는 docker-compose
보다 사용자의 접근성을 높인 도구입니다.
※ 공식 설치 문서의 안내를 바탕으로 설치합니다.
사전작업
포테이너는 TCP 8000번, TCP 9000번 포트를 사용합니다. 따라서 오라클의 가상 클라우드 네트워크의 접근 규칙과 iptables 방화벽에 서비스가 사용하는 해당 포트를 허용하는 규칙을 생성합니다.
- 오라클 가상 클라우드 네트워크 접근 규칙 수정
※ 메뉴 접근 방법은
Oracle Cloud Intrastructure에서 특정 포트로 접근 허용하기를 참고합니다.
메뉴 접근 후, 설정할 항목은 다음과 같습니다.
- 소스 CIDR :
0.0.0.0/0
- IP 프로토콜 :
TCP
- 대상 포트 범위 :
8000,9000
- iptables 방화벽 포트 허용
sudo iptables -A INPUT -p tcp -m tcp --dport 8000 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 9000 -j ACCEPT
- iptables 방화벽의 설정 내용을 저장하고 다시 불러옵니다.
sudo netfilter-persistent save
sudo netfilter-persistent reload
포테이너 설치
- 포테이너 데이터를 담아둘 볼륨을 설정합니다.
sudo docker volume create portainer_data
- 포테이너 이미지를 내려받고 실행합니다.
sudo docker run -d \
-p 8000:8000 \
-p 9000:9000 \
--name=portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce
포테이너 초기 설정
웹브라우저에서 http://example.com:8000을 입력하여 패널에 접속합니다.
※ 만약 화면에 표시되는 내용이 없다면 http://example.com:9000 으로 변경하여 접속해 봅니다.
최초 접속 시 관리자 계정의 암호를 설정하는 화면이 표시됩니다.
[Password]와 [Confirm password] 항목에 추후 사용할 암호를 입력합니다.
[Create user]를 선택합니다.
연결할 서비스(Endpoints)를 선택하는 화면이 표시됩니다.
[Docker]를 선택합니다. [Connect]를 선택합니다.
포테이너 사용하기 - NAS 서비스 설치하기
포테이너는 Docker Compose와 같이 YAML을 이용하여 컨테이너를 관리할 수 있는 기능을 제공합니다.
-
[Stacks] → [Add Stack] → [Web editor] 메뉴로 접근합니다.
-
하단에 보이는 창에 Docker Compose의 구성 파일인 YAML을 해당 메뉴에 붙여 넣고 [Deploy the stack] 으로 구성 파일에 기입된 Container 들을 한 번에 추가 및 실행할 수 있습니다.
※ 이후 글들은 설치할 각 서비스(소프트웨어)별 [Web editor]에 추가할 YAML을 제공합니다.
※ YAML을 이용하여 일괄적으로 관리하는 것 외에도 [Containers], [Images], [Volumes]와 같이 Docker의 모든 구성요소를 관리할 수 있습니다.
정리
이번에는 여러 NAS서비스를 설치하기에 앞서 가상화 소프트웨어인 Docker를 설치하고 Docker를 WEB UI 바탕으로 손쉽게 사용할 수 있도록 도와주는 Portainer를 설치하였습니다. 다음 글에서는 NAS의 기본적인 서비스인 웹서버를 설치하도록 하겠습니다.
참고
'기타' 카테고리의 다른 글
[자작 NAS] 7. 미디어 서버 - Plex (0) | 2020.09.22 |
---|---|
[자작 NAS] 5. 웹 서버 설치 및 설정 - Nginx (2/2) (0) | 2020.09.15 |
[자작 NAS] 1. 우분투 서버 마련하기 (0) | 2020.09.12 |
[자작 NAS] 6. 토렌트 클라이언트 - Transmission (0) | 2020.09.07 |
[자작 NAS] 5. 웹 서버 설치 및 설정 - Nginx (1/2) (0) | 2020.09.05 |