Dokemon 이란?

사용하기 쉬운 도커 컨테이너 관리용 GUI 도구로 Pokémon 이 연상되는 재미있는 이름의 도구입니다.
이런 강렬한 이름에 한번 어떤식으로 사용이 가능한지 테스트 해보았습니다.

설치

이번 테스트에 사용한 운영 체제는 Amazon Linux 2023 에서 진행 되었습니다.

먼저 기본적으로 Dockerdocker-compose 를 설치합니다.

$ sudo yum -y install docker
$ sudo systemctl enable --now docker

$ sudo curl -SL https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64 -o /usr/libexec/docker/cli-plugins/docker-compose 
$ sudo chmod u+x /usr/libexec/docker/cli-plugins/docker-compose 

$ sudo docker compose version
Docker Compose version v2.23.3

dokemon 실행

/> # mkdir dokemon
/> # cd dokemon/
dokemon /> # vi compose.yaml

compose.yaml 작성

/> # cat compose.yaml
version: "3.3"

services:
  traefik:
    image: "traefik:v2.10"
    container_name: "traefik"
    command:
      - "--log.level=DEBUG"
      - "--accesslog=true"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.dokemon.acme.tlschallenge=true"
      - "--certificatesresolvers.dokemon.acme.email=chhanz@chhanz.xyz"
      - "--certificatesresolvers.dokemon.acme.storage=/letsencrypt/dokemon.json"
    ports:
      - "443:443"
      - "8080:8080"
    volumes:
      - "./letsencrypt:/letsencrypt"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  dokemon:
    image: productiveops/dokemon:latest
    container_name: dokemon
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.dokemon.rule=Host(`test.chhanz.xyz`)"
      - "traefik.http.routers.dokemon.entrypoints=websecure"
      - "traefik.http.routers.dokemon.tls.certresolver=dokemon"
    ports:
      - 9090:9090
    volumes:
      - ./dokemondata:/data
      - /var/run/docker.sock:/var/run/docker.sock

docker-compose up

test.chhanz.xyz 를 접속 URL 을 사용하고 TLS 인증서를 자동으로 연결하고 dokemon 을 구동합니다.

dokemon /> # mkdir ./letsencrypt && mkdir ./dokemondata
dokemon /> # docker compose up -d
dokemon /> # docker compose ls
NAME                STATUS              CONFIG FILES
dokemon             running(2)          /root/dokemon/compose.yaml

접속

설정한 URL 인 https://test.chhanz.xyz 로 접속합니다.

    dokemon 에 접속하고 초기 사용자를 생성합니다.

    로그인 후에 dokemon 에서 관리가 가능한 도커 노드 목록을 확인 할 수 있습니다.

    테스트를 위해 prometheus-grafana 의 compose 프로젝트를 생성합니다.

    Actions 메뉴에서 “Pull” 을 이용해서 컨테이너 이미지를 pull 받을 수 있습니다.

    “Up” 을 이용하여 등록한 compose 프로젝트를 up 합니다.

    Containers 메뉴에서 현재 도커 노드에서 실행중인 컨테이너 목록이 확인 가능합니다.

    Containers 메뉴에서 expose 된 링크를 누르면 자동으로 위와 같이 해당 컨테이너로 연결됩니다.

dokemon Node 추가

다음은 dokemon 의 매력적인 기능인 Node 추가입니다.
 
Docker Swarm 과 같은 Cluster 의 역할은 어렵지만 Standalone docker node 관리에 용의합니다.
소규모 환경을 편리하게 운영하는데 적합할 것 같습니다.

 

Add Node

신규 노드를 생성하고 Docker 를 설치합니다.

    먼저 “Set Server URL” 을 선택하여 ‘dokemon’ 의 메인 서버 정보를 설정합니다.

    위와 같이 메인 서버 URL 을 추가합니다.

    메인 서버 URL 이 추가가 되면 Add Node 버튼이 활성화가 되며, 위와 같이 신규로 추가할 서버의 이름을 입력합니다.

    추가된 서버의 “Register” 버튼을 선택합니다.

    위와 같이 dokemon-agent 를 설치하기 위한 스크립트가 제공됩니다.
    “Copy” 버튼을 선택하고 신규로 추가할 서버에 해당 명령어를 입력합니다.

    dokemon-agent 가 정상적으로 연결되면 위와 같이 서버가 활성화가 된 것을 볼 수 있습니다.

    신규로 추가된 노드에 테스트 해볼 compose 라이브러리를 생성합니다.

    “Add From Library” 를 선택하고

    이전에 생성한 “prom-stack-comp-lib” 를 선택합니다.

    등록한 compose 프로젝트를 구동합니다.

    expose URL 변경을 위해 “Edit Base URL” 을 선택하고 사용할 퍼블릭 IP 혹은 사용할 IP, URL 등을 입력합니다.
    만약 해당 URL 입력이 없는 경우, dokemon 메인 URL로 연결이 됩니다.

    위와 같이 정상적으로 Grafana 에 접속이 되는 것을 확인 할 수 있습니다.

참고 자료

chhanz's profile image

chhanz

2023-12-23

Read more posts by this author