Dokemon
이란?
사용하기 쉬운 도커 컨테이너 관리용 GUI 도구로 Pokémon
이 연상되는 재미있는 이름의 도구입니다.
이런 강렬한 이름에 한번 어떤식으로 사용이 가능한지 테스트 해보았습니다.
설치
이번 테스트에 사용한 운영 체제는 Amazon Linux 2023 에서 진행 되었습니다.
먼저 기본적으로 Docker
및 docker-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 에 접속이 되는 것을 확인 할 수 있습니다.