본문 바로가기

Docker & Kubernetes

[Docker] 개념 및 사용을 위한 Portainer 설치

반응형

도커... 개념은 어렵지만 막상 사용하면... 정신 없다

* Docker 관련 개념 정리 (이 정도만 알아도 도커 쓰는데는 큰 문제 없다고 판단)

  •  
용어 개념
Container  * 격리 환경에서 애플리케이션 실행을 위한 패키지
- 호스트와 분리된 별도의 시스템을 갖추며, Docker에 의해 관리됨
Docker * 컨테이너화 된 앱을 생성, 배포하는 오픈소스 플랫폼
- 컨테이너를 통해 적절히 앱을 패키징하여 생성하며 빠른 배포, 실행을 수행
Docker-compose * Docker용 file(yaml, yml)을 사용하여 오케스트레이션 된 컨테이너를 쉽게 실행하도록 지원하는 도구
YAML (YML) * 문서나 데이터의 구조를 명시하는데 집중된 MarkUp보다 데이터 중심으로 사용자 친화적으로 처리하는 데이터 형식
- Doker Compose, Kubernetes, Flutter, Spring boot 등, 프로젝트에서 설정 파일을 정의할 때 자주 사용
Stack * Docker Compose 파일로 정의된 서비스 그룹
- 여러 서비스가 하나의 스택으로 정의, 관리 및 연결이 용이하고 배포가 빠르고 편함
Image * Docker 컨테이너를 만들기 위한 실행 가능 패키지
- 컨테이너의 실행에 필요한 모든 것을 제공하는 패키지로 YAML이나 Docker Hub의 이미지 레지스트리에서 다운로드
App Template * 사전 정의된 설정이 존재하는 Docker file 포함 템플릿
- Ubuntu, NodeJS, MYSQL 등의 준비된 애플리케이션 컨테이너 템플릿

 

 

 

* Portainer

- Docker 및 Kubernetes를 위한 경량화 된 관리 도구로서, 웹 기반 사용자 인터페이스
- 무료로 배포하여 사용할 수 있으며 GUI 방식으로 컨테이너 관리가 가능

Portainer 이미지 (GUI 충은 마음이 편안해진다. 다만, 결국 또 설정은 CLI나 다름 없다...)

 

 

 

* Portainer 설치

1) 필자의 설치 환경
- Ubuntu 22.04 (AWS EC2)

2) 설치 코드

apt update
apt upgrade
# apt를 최신 버전으로 조정
curl -fsSL https://get.docker.com -o get-docker.sh # docker 최신 버전 설치 (타 설치 방법이 존재할 수 있음)
chmod 777 ./get-docker.sh # 다운 시, 실행 권한이 없으므로 적절히 조절
./get-docker.sh

docker -v # 도커 정상설치 확인
# Docker version 23.0.2, build 569dd73


systemctl enable docker.service
systemctl enable containerd.service
# 도커 및 컨테이너 서비스 서버 재구동 시, 자동 시작되도록 설정


curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# Docker compose(yaml, yml)파일을 통해 컨테이너 정의를 위한 도구 설치
chmod +x /usr/local/bin/docker-compose # compose 실행 권한 확보


docker-compose -v # compose 정상 설치 확인
# docker-compose version 1.29.2, build 5becea4c


systemctl start docker # 도커 스타트
docker run hello-world # 샘플 컨테이너 실행


docker volume create portainer_data # Portainer가 설치될 볼륨 확보
sudo docker run -d -p 18000:8000 -p 19000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
# 도커 기본 포트 8000(sub), 9000(main) 포트 변경 -> 18000(sub), 19000(main)


docker ps # 도커 포트 설정 상태 확인 - 9443 (HTTPS) 및 이외 변경한 포트(HTTP) 확인 가능
systemctl status docker # 도커 run 상태 확인


docker rmi --force hello-world # 샘플 컨테이너 삭제
systemctl start docker # 도커 재시작
docker restart portainer # 포테이너 재시작


# 위 설정 후 브라우저에서 변경한 main 포트인 http://서버IP:19000 으로 접속
# 만약 접속이 안된다면, 해당 서버 reboot 후 진행

* 주의 사항 : 필자는 AWS 환경에서 해당 작업을 수행 했기 때문에 당연히 Security Group을 설정해 줬음

 

 

 

* Portainer 접속
- 최초 접속 시, 계정 설정 창 확인 (설정 후 create user로 진행)

굳이 admin으로 하지 않아도 가능하다

 

 

 

* Portainer 로그인 후
1) Docker Control

2) Local Docker 연결 시, 정상 구성 확인

대부분 Stacks에서 Application Build 작업을 yaml 파일을 통해 수행

3) Stacks에서 Build 환경 확인

Web Editor에서 YAML 형식을 작성하거나, 해당 확장자의 파일 Upload 등 사용 방식은 다양하다

 

 

 

 

반응형

'Docker & Kubernetes' 카테고리의 다른 글

[Docker] Portainer 기반 OpenCTI 연동  (0) 2023.04.13