1. portainer 데이터베이스를 저장할 볼륨 생성
# docker volume create portainer_data
2. portainer 다운로드 및 설치
# docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
(8000은 에이전트 관리용 / 9443은 웹 접근용)
docker run docker run은 도커 컨테이너를 생성하고 실행하는 기본 명령어입니다.
-d 이 옵션은 컨테이너를 백그라운드 모드에서 실행하도록 설정합니다. 즉, 터미널에 명령어를 입력한 후에도 콘솔에 출력되지 않고, 백그라운드에서 계속 실행됩니다. 이를 "detached mode"라고도 합니다.
-p 8000:8000 이 옵션은 호스트의 8000번 포트를 컨테이너의 8000번 포트에 연결하는 것을 의미합니다. Portainer가 에이전트 관리용으로 사용하는 포트입니다.
-p 9443:9443 이 옵션은 호스트의 9443번 포트를 컨테이너의 9443번 포트에 연결합니다. 9443번 포트는 HTTPS 프로토콜을 사용하는 Portainer 웹 인터페이스에 안전하게 접근하기 위해 사용됩니다. 즉, 호스트에서 https://<host_ip>:9443로 접속하면 HTTPS를 통해 Portainer에 접근할 수 있습니다.
--name portainer 이 옵션은 컨테이너의 이름을 지정합니다. 여기서는 portainer라는 이름이 주어졌습니다. 이를 통해 나중에 해당 컨테이너를 제어할 때, 이름으로 쉽게 식별하고 접근할 수 있습니다.
--restart=always 이 옵션은 컨테이너가 종료되었을 때 항상 자동으로 다시 시작되도록 설정합니다. 예를 들어, 서버가 재부팅되거나 컨테이너가 예기치 않게 종료되었을 때, 컨테이너가 자동으로 재시작됩니다.
-v /var/run/docker.sock:/var/run/docker.sock 이 옵션은 도커의 소켓 파일을 컨테이너 내부로 마운트합니다. /var/run/docker.sock는 도커 데몬과 통신할 수 있는 소켓 파일입니다. 이를 마운트함으로써, 컨테이너가 호스트에서 실행 중인 도커 데몬과 통신하고, 다른 컨테이너를 제어할 수 있게 됩니다. Portainer는 이를 사용하여 도커 엔진을 관리합니다.
-v portainer_data:/data 이 옵션은 portainer_data라는 도커 볼륨을 컨테이너의 /data 디렉토리에 마운트합니다. 이 볼륨은 Portainer의 데이터(예: 사용자 설정, 관리 정보 등)를 저장하는 데 사용됩니다. 이를 통해 Portainer가 종료되거나 컨테이너가 삭제되더라도 데이터가 유지됩니다.
portainer/portainer-ce:latest 이 부분은 사용할 도커 이미지를 지정합니다. portainer/portainer-ce:latest는 Portainer의 커뮤니티 에디션(Community Edition, CE)의 최신 버전 이미지를 사용하라는 의미입니다. Portainer는 도커 컨테이너를 쉽게 관리할 수 있는 웹 UI를 제공합니다.
요약 이 명령어는 Portainer 웹 인터페이스를 설정하고, 이를 통해 도커 컨테이너들을 쉽게 관리할 수 있도록 환경을 구성하는 것입니다. 에이전트 통신용으로 8000번 포트, HTTPS 접근을 위해 9443번 포트가 사용되고, 도커 데몬과 통신할 수 있도록 도커 소켓을 컨테이너 내부로 마운트합니다. 또한, Portainer의 데이터는 portainer_data라는 도커 볼륨에 저장되어 컨테이너가 재시작되거나 삭제되더라도 데이터가 손실되지 않도록 합니다.