Profile picture

[Docker] portainer를 통한 도커 모니터링 및 관리

JaehyoJJAng2023년 05월 17일

◾️ portainer

portainer는 Docker Web 관리 Tool이다. 간단하게 설명하자면 현재 실행되고 있는 Docker 관련 컨테이너, 이미지, 볼륨, 네트워크 등을 web에서 모니터링 및 관리할 수 있는 도구라고 볼 수 있다.


무엇보다 로컬상의 Docker 뿐만아니라 다른 노드의 Docker 또한 agent를 통해 관리가 가능하다.

portainer 공식 홈페이지를 읽어보면 컨테이너를 관리할 수 있는 GUI 또한 제공하고 있고 도커뿐만 아니라 쿠버네티스, 도커스웜도 지원하고 있다(https://www.portainer.io/)


▪️ Portainer 이미지


▪️ 노드 연결

도커 구성도를 대략적으로 그려보면 아래와 같다
image


노드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 접속


위 주소로 접근하면 아래처럼 username과 패스워드를 입력하라는 부분이 나온다. 대충 적어두고 진행하자
image


로그인 후 Home으로 들어가면 메인화면이 아래처럼 나온다
image


local을 클릭하면 현재 기동중인 도커 컨테이너 현황 및 도커 이미지, 네트워크 등을 알 수가 있다
image
image


◾️ 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 메모리 사용하도록 제한

Loading script...