◾️ portainer
portainer는 Docker Web 관리 Tool이다. 간단하게 설명하자면 현재 실행되고 있는 Docker 관련 컨테이너, 이미지, 볼륨, 네트워크 등을 web에서 모니터링 및 관리할 수 있는 도구라고 볼 수 있다.
무엇보다 로컬상의 Docker 뿐만아니라 다른 노드의 Docker 또한 agent를 통해 관리가 가능하다.
portainer 공식 홈페이지를 읽어보면 컨테이너를 관리할 수 있는 GUI 또한 제공하고 있고 도커뿐만 아니라 쿠버네티스, 도커스웜도 지원하고 있다(https://www.portainer.io/)
▪️ Portainer 이미지
- portainer 공식 이미지 (https://hub.docker.com/r/portainer/portainer)
- portainer github (https://github.com/portainer/portainer)
- portainer 설치 가이드 (https://docs.portainer.io/start/install-ce/server/docker/linux)
▪️ 노드 연결
도커 구성도를 대략적으로 그려보면 아래와 같다
노드1에서 포테이너와 포테이너 에이전트를 도커로 설치하도록 해보자
# Portainer 컨테이너 실행
$ docker run -d -it -p 8000:8000 -p 9000:9000 --name=portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v potainer_data:/data \
portainer/portainer-ce
# portainer agent 컨테이너 실행
$ docker run -d -it -p 9001:9001 --name=portainer_agent \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes portainer/agent
포테이너 접근 포트는 9000번 이다. (https://127.0.0.1:9000)
▪️ portainer 접속
- 접속주소: https://127.0.0.1:9000
위 주소로 접근하면 아래처럼 username과 패스워드를 입력하라는 부분이 나온다. 대충 적어두고 진행하자
로그인 후 Home으로 들어가면 메인화면이 아래처럼 나온다
local을 클릭하면 현재 기동중인 도커 컨테이너 현황 및 도커 이미지, 네트워크 등을 알 수가 있다
◾️ Docker Compose
위에서 처럼 매번 docker run
명령으로 portainer 컨테이너들을 실행시키기에는 번거로우므로 docker-compose.yml
파일을 미리 작성하여 조금 더 간단하게 컨테이너 올려볼 수 있도록 하자.
{% include codeHeader.html name='~/portainer/docker-compose.yaml' %}
version: "3"
services:
portainer:
image: portainer/portainer-ce
restart: always
ports:
- "8000:8000"
- "9000:9000"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "portainer_data:/data"
container_name: portainer
labels:
org.label-schema.group: "monitoring"
deploy:
resources:
limits:
cpus: '0.20'
memory: 2G
portainer-agent:
image: portainer/agent
restart: always
ports:
- "9001:9001"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "/var/lib/docker/volumes:/var/lib/docker/volumes"
container_name: portainer-agent
labels:
org.label-schema.group: 'monitoring'
volumes:
portainer_data: {}
labels
: "monitoring" 이라는 라벨이 추가됨. 해당 라벨은 서비스를 그룹화하거나 구분하는 데 사용될 수 있음deploy
: 배포 환경에서 CPU 및 메모리 리소스를 제한 함.- 컨테이너가 최대 0.20 CPU 및 2GB 메모리 사용하도록 제한