“ 당신은 소프트웨어 품질을 추구할 수도 있고, 포인터 연산을 할 수도 있다. 그러나 두 개를 동시에 할 수는 없다. ”
이리저리 회사 일이 너무 바빠서 포스팅이 너무 뜸했습니다.. ㅠㅠ
공부하는 게 진짜 쉽.. 지 않네요 ,, 퇴근후면 너무 힘들고 쉬고 싶고... 누워서 유튜브나 보고 싶은데.. 그래도 어쩌겠습니까
개발자를 직업으로 가진 이상 공부는 해야 하는걸 ㅠㅠ 아무튼!! 맘 다잡고 복지포인트 받은 걸로 호스팅 케이알에서 도메인하나 샀습니다.
이 도메인으로 서브도메인 여러 개 늘려가며 하나씩 배포하면서 공부해 볼까 합니다.
그래서 첫 번째로 도커를 사용하여 Portainer를 설치하는 방법에 대해서 설명해 볼까 합니다.
Portainer 란?
간단하게 설명하자면 Portainer는 Docker를 Web에서 쉽게 관리할 수 있게 도와주는 툴입니다.
Docker 관련된 컨테이너 및 이미지 관리 및 로깅 또는 모니터링 용도로 사용가능할 수 있다고 합니다. 물론 더 자세한 내용이 있겠지만 하나씩 설명해 드리기보단 아래 Portainer 공식 사이트에서 참고하시면 될 거 같습니다.
Docker Desktop이 있는데? Portainer를 굳이?
Docker Desktop이 로컬 머신에서 컨테이너와 이미지에 대해서 편리하게 관리하고 실행할 수 있는 강력한 도구인건 맞습니다!
그런데 여기서 알아야 할 건! 도커 데스크톱은 로컬 개발환경에서 사용되므로 Docker클러스터를 중앙에서 효과적으로 관리하기 힘듭니다.
그래서 팀 협업이나, 서버환경에서 유용하게 사용하기 위해 Portainer를 사용한다고 합니다. Portainer가 설치된 서버 쪽에 도메인만 연결해 두면 외부에서 접근 가능하니 편한 거 같네요!
Docker 폴더 구성
이미 도커가 설치되어 있다는 가정하에 진행하겠습니다.
먼저 루트경로에서 도커 폴더를 하나 만들고 시작하겠습니다.
저는 이제 도커 관련 컨테이너는 여기 폴더 안에만 구성하려고 합니다. (폴더구성은 본인에 맞게 알아서!)
mkdir docker // docker 폴더 생성
cd docker // 도커 폴더로 이동
mkdir portainer // portainer 폴더 생성
cd portainer // portainer 폴더 이동
docker-compose.yml 작성
portainer 폴더에 docker-compose.yml 파일을 생성합니다.
version: '3'
services:
portainer:
# Portainer 컨테이너에 사용할 이미지 (portainer-ce의 최신 버전)
image: portainer/portainer-ce:latest
container_name: portainer # 컨테이너의 이름을 지정
# 컨테이너가 호스트 시스템의 모든 권한을 얻을 수 있도록 허용 (주의: 보안상의 이유로 사용에 주의가 필요)
privileged: true
ports:
- "55555:9000" #port 설정 외부:55555(본인이설정), 내부:9000(portainer port)
volumes:
- "./portainer:/data" # 호스트의 ./portainer 디렉토리를 컨테이너 내부의 /data 디렉토리에 마운트 (Portainer 데이터를 저장하기 위해)
- "/var/run/docker.sock:/var/run/docker.sock" # 호스트의 Docker 소켓을 컨테이너 내부의 Docker 소켓에 마운트 (Docker API에 접근하기 위해)
restart: always # 컨테이너가 종료될 때 항상 재시작
volumes:
portainer_data:
위에 내용에 대해서 간단히 설명하자면, portainer/portainer-ce:latest로 portainer 최신 버전을 사용합니다.
55555 포트 (외부)
9000 포트 (portainer 내부) -> portainer는 9000으로 열린다고 합니다. 이거 안 보고 무작정 했다가, 왜 안 되지.. 하면서 로그보니 9000으로 열리더군요..
http://localhost:55555로 접근하면 -> 도커 내부에 9000 포트로 접근하게 됩니다.
포트포워딩 설정
혹시나 공유기 포트포워딩을 하지 못하는 분들을 위해
192.168.0.1 또는 192.168.1.1로 접근합니다. 둘 중에 하나일 겁니다. 보통은 192.168.0.1 초기에 설정 안 하신 분들은 iptime -> admin / admin이고, 나머지는 찾아보시거나 설명서 보시면 될 겁니다.
이제 공유기 관리자페이지로 들어가셔서 고급 설정 - NAT/라우터 관리 - 포트포워드 설정을 들어갑니다.
아래와 같이 본인 ip와 docker-compose에 작성했던 55555 포트를 입력하면 됩니다.
저는 예를 든 거라서 포트는 본인이 알아서 정해서 사용하시면 됩니다.
만약에 외부를 44444로 하고 내부를 33333으로 하고 싶은 경우 nginx와 같은 리버스 프락시를 사용하여 외부에서 내부포트로 연결해서 사용하면 됩니다.
docker-compose 실행
docker-compose up -d
이렇게 컨테이너가 생성이 되고 아무런 에러가 없이 실행이 된다면
크롬에서 localhost:55555 또는 본인 컴퓨터 IP:55555 입력하여 접속해 봅니다.
저는 이미 아이디와 패스워드를 설정했기 때문에 아래처럼 로그인 화면이 나오는 거라. 위에 포트로 접속이 되면 잘 설치된 겁니다.
docekr폴더에서 portainer 폴더를 보면 파일들이 잘 설치되어 있죠?
portainer 폴더에 정보가 있기 때문에 회원가입하고 로그인 이후에 이 폴더를 삭제하면 다시 회원가입하라고 나올 겁니다.
그래서 컨테이너를 중지하고 다시 켜도 데이터가 보존되는 겁니다. 자세한 내용은 docker-volume에 대해서 알아보시면 됩니다.
이번 포스팅에서 docker-compose로 portainer 설치하는 방법에 대해서 작성해 봤는데요. 처음에는 저도 docker가 익숙지 않아서.. 헷갈리는 부분이 많았지만 한번 해보니 그래도 쉬웠던 거 같습니다. 다음 포스팅에서는 docker에서 nginx를 설치하는 방법에 대해서 설명해 볼까 합니다.