본문으로 건너뛰기

[Docker] Preview dokemon (feat. Amazon Linux 2023)

Docker manager

요약

  • Dokemon은 도커 컨테이너 관리용 GUI 도구로, Traefik과 함께 compose.yaml로 실행하면 TLS 인증서가 자동 연결된 URL로 접속할 수 있습니다.
  • 웹 UI에서 compose 프로젝트를 등록하고 Pull, Up 액션으로 컨테이너를 실행하며 실행 중인 컨테이너 목록을 확인할 수 있습니다.
  • dokemon-agent로 노드를 추가하면 여러 Standalone 도커 노드를 한 곳에서 관리할 수 있어 소규모 환경 운영에 적합합니다.

테스트 환경 Amazon Linux 2023, Docker Compose v2.23.3

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 에 접속이 되는 것을 확인 할 수 있습니다.

참고 자료

자주 묻는 질문

Amazon Linux 2023에서 Dokemon을 실행하려면 무엇을 먼저 설치해야 하나요?

sudo yum -y install docker로 Docker를 설치하고, docker-compose 바이너리를 /usr/libexec/docker/cli-plugins/docker-compose에 내려받아 실행 권한을 줍니다. 이후 compose.yaml을 작성하고 docker compose up -d로 실행합니다.

Dokemon에 HTTPS 인증서는 어떻게 적용하나요?

compose.yaml에 Traefik 컨테이너를 함께 두고 ACME TLS challenge 기반 certificatesresolver를 설정한 뒤, dokemon 서비스에 Host 규칙과 websecure 엔트리포인트, certresolver traefik 라벨을 지정하면 인증서가 자동으로 연결됩니다.

Dokemon에 다른 도커 노드를 추가하려면 어떻게 하나요?

먼저 “Set Server URL”로 메인 서버 URL을 설정한 뒤 Add Node로 노드 이름을 입력하고 “Register”를 선택합니다. 제공되는 dokemon-agent 설치 스크립트를 신규 서버에서 실행하면 노드가 활성화됩니다.

Dokemon으로 Docker Swarm 같은 클러스터를 관리할 수 있나요?

Docker Swarm과 같은 Cluster 역할은 어렵습니다. 대신 Standalone docker node 관리에 용이해 소규모 환경을 편리하게 운영하는 데 적합합니다.