[Monitoring] Portainer로 Sub Server Docker 환경 관리하기

2025. 1. 5. 17:50·DevOps/Monitoring

1. 시작하며

최근 사이드 프로젝트를 진행하며 Docker 환경에서 여러 컨테이너를 효과적으로 관리하기 위해 Portainer를 활용해보기로 했습니다. 특히, Main Server(192.168.0.25)에 있는 Docker 컨테이너뿐만 아니라 Sub Server(192.168.0.47)의 컨테이너들도 GUI 기반 툴을 이용해 한곳에서 관리하고자 했습니다. 이를 위해 Sub Server의 Docker Daemon 설정을 수정하고 Portainer Agent를 설치하여 Main Server의 Portainer에서 Sub Server를 연결하는 과정을 정리해보았습니다.

2. Sub Server에서 Docker Daemon 설정 수정

Main Server에서 Sub Server의 Docker 컨테이너를 관리하려면 Sub Server의 Docker Daemon을 외부 연결이 가능하도록 설정해야 합니다. 이를 통해 Portainer가 Sub Server에 설치된 Docker 환경과 통신할 수 있습니다.

2.1 Docker Deamon 설정 수정

1) docker.service 파일 수정

Sub Server에서 Docker Daemon 설정 파일인 docker.service를 열어 수정합니다.

sudo nano /lib/systemd/system/docker.service

수정할 내용

  • ExecStart 라인을 아래와 같이 변경합니다.
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://192.168.0.47:2375 --containerd=/run/containerd/containerd.sock

수정된 옵션 설명

  • H fd://: 기존의 로컬 소켓 연결 유지
  • H tcp://192.168.0.47:2375: Sub Server의 Docker Daemon이 192.168.0.47의 2375 포트를 통해 외부 요청을 받을 수 있도록 설정
  • 2375: Docker Daemon의 외부 접근 포트(필요에 따라 변경 가능)

2) 파일 저장 및 종료

수정이 완료되었으면 아래 단축키를 사용해 파일을 저장하고 종료합니다.

  • 저장: Ctrl + O → Enter
  • 종료: Ctrl + X

3) Systemd 데몬 재로드

파일 수정 후, systemd 데몬을 재로드하여 변경 사항을 반영합니다.

sudo systemctl daemon-reload

4) Docker 서비스 재시작

Docker 서비스를 재시작하여 변경된 설정을 적용합니다.

sudo systemctl restart docker

2.2 연결 확인

1) Main Server에서 연결 테스트

Main Server에서 Sub Server의 Docker Daemon에 연결 가능한지 아래 명령어로 확인합니다.

docker -H tcp://192.168.0.47:2375 ps
  • Sub Server에 실행 중인 Docker 컨테이너 목록이 출력되면 설정이 성공적으로 적용된 것입니다.

3. Sub Server에 Portainer Agent 설치

Main Server의 Portainer와 Sub Server를 연결하려면 Sub Server에 Portainer Agent를 설치해야 합니다.

3.1 Portainer Agent 설치 및 진행

아래 명령어를 Sub Server에서 실행하여 Portainer Agent를 실행합니다.

docker run -d \
  -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 \
  -v /:/host \
  portainer/agent:2.21.2

옵션 설명

  • p 9001:9001: Portainer Agent가 Sub Server의 9001 포트를 통해 수신
  • /var/run/docker.sock: Docker 제어를 위해 소켓을 마운트
  • /var/lib/docker/volumes: Docker 볼륨 액세스를 위해 마운트
  • /:/host: Sub Server의 호스트 시스템에 접근 제공

3.2 Portainer Agent 상태 확인

Portainer Agent가 정상적으로 실행 중인지 확인하려면 아래 명령어를 사용합니다.

docker ps

결과에 portainer_agent가 표시되고 상태가 UP으로 나타나야 합니다.

4. Main Server에서 Portainer 설정

Sub Server의 Docker 환경을 Main Server의 Portainer에 연결합니다.

4.1 Portainer UI에서 Sub Server 연결

  1. Portainer UI에 접속합니다.
  2. 해당 UI 왼쪽에 Environment-related에 Environments를 클릭합니다.
  3. Add environment를 클릭해서 환경설정을 추가해줍니다.
  4. Docker-Standalone을 선택하고 Start Wizard를 클릭합니다.
  5. Environment Wizard 화면에서 아래 설정을 진행합니다.
    • Name: Sub Server (원하는 이름으로 설정)
    • Environment Address: 192.168.0.47:9001 (Sub Server의 IP와 Portainer Agent의 포트)

4.2 연결 저장 및 확인

  • 저장을 클릭한 후, Sub Server가 등록되고 Docker 환경이 표시되는지 확인합니다.
  • Sub Server에 있는 Docker 컨테이너 목록이 표시되고, 이를 관리할 수 있는지 테스트합니다.
  • 참고로 local은 Portainer가 설치되어 있는 Main Server입니다.

5. 결론

Portainer와 Portainer Agent를 활용하면 여러 서버의 Docker 환경을 효율적으로 관리할 수 있습니다. 특히, Sub Server의 Docker Daemon 설정과 Portainer Agent 설치는 서버 간 연결을 구성하는 핵심 단계였습니다.

핵심 요약

  1. Sub Server에서 Docker Daemon을 외부 접근 가능하도록 설정
  2. Sub Server에 Portainer Agent를 설치하여 Main Server의 Portainer에 연결
  3. Portainer UI에서 Sub Server를 추가하고 Docker 환경을 중앙에서 관리

'DevOps > Monitoring' 카테고리의 다른 글

[Monitoring] Prometheus와 MySQL Exporter로 Grafana MySQL DB 모니터링 시스템 구축하기  (2) 2025.01.15
'DevOps/Monitoring' 카테고리의 다른 글
  • [Monitoring] Prometheus와 MySQL Exporter로 Grafana MySQL DB 모니터링 시스템 구축하기
개발자 동긔
개발자 동긔
배우고 느낀점들을 기록합니다. 열정 넘치는 백엔드 개발자로 남고싶습니다.
  • 개발자 동긔
    Donker Dev
    개발자 동긔
  • 전체
    오늘
    어제
    • Category (39)
      • BackEnd (23)
        • JAVA (15)
        • Spring & JPA (7)
      • Database (4)
      • Computer Science (2)
        • Network (0)
        • Security (0)
        • Web (1)
      • DevOps (6)
        • Docker (1)
        • Jenkins (0)
        • Monitoring (2)
        • CICD (1)
      • 트러블 슈팅 (3)
      • 성능 개선 (1)
      • Project (0)
  • 인기 글

  • 태그

    Jenkins
    restful api 설계
    nginx
    @RequestBody
    spring cloud msa
    spring boot
    restful api
    와일드카드
    CICD
    mysql master/slave replication
    Database
    interface
    JPA
    docker compose
    docker
    SSH
    Spring
    java
    인터페이스
    master/slave db 이중화 처리
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
개발자 동긔
[Monitoring] Portainer로 Sub Server Docker 환경 관리하기
상단으로

티스토리툴바