Linux에서 Docker 및 Portainer 설치
[[academy-video-youtube({"vid": "-RZmUkObVXU", "start_time": "0", "title": "Linux에 Docker 및 Portainer 설치하기", "creator": "Tim Corey", "length": "~18m"})]]
모든 것이 운영 체제에 직접 위치해야 하는 것은 아닙니다. SQL Server와 같은 도구는 큰 자원 발자국을 가지고 있으며, 이를 베어 메탈로 실행하면 필요에 관계없이 자원이 소모됩니다. 컨테이너는 이를 해결합니다: 필요할 때 실행하고 필요하지 않을 때 멈춥니다. Docker는 이 워크플로우를 지원하는 엔진이며, Portainer는 CLI 명령의 라이브러리를 외우지 않고도 관리 가능하게 유지하는 경량 GUI입니다.
이 분해는 Tim Corey's Linux 개발 시리즈를 토대로 하여 Ubuntu에서의 전체 설치를 나열합니다: apt 저장소 등록, 엔진 설정, 개인용 기계에서 sudo 필요 제거, Portainer CE를 지속적인 컨테이너로 배포.
1단계: Docker의 apt 저장소 추가
[3:10 - 6:00] Docker 자체를 apt을 통해 설치하기 전에 Docker의 패키지 소스를 등록하고 시스템에 신뢰할 이유를 제공해야 합니다. Docker는 이 모든 작업을 한 번의 복사로 처리하는 실행 가능한 명령 블록을 제공합니다. docs.docker.com으로 이동, 설치 섹션으로 이동한 다음 Ubuntu를 선택하십시오. 'apt 저장소를 사용하여 설치' 아래의 명령이 원하는 것입니다.
그 블록은 일련의 작업을 수행합니다: 필요한 인증서 도구 설치, Docker의 공식 GPG 키 다운로드, 권한 조정 및 레포지토리 주소를 apt 소스 목록에 작성합니다. 문서에서 복사하여 Ctrl+Shift+V을 통해 터미널에 붙여넣어 전체 블록을 한 번에 실행하십시오.
강조할 중요한 점: 새로운 패키지 소스를 맹목적으로 추가하지 마세요. 소스를 설치하기 전에 그것을 신뢰하는지 확인하세요. Docker는 신뢰할 만하고 신뢰할 가치가 있지만 이는 추가하는 모든 소스에 적용되는 원칙입니다. 이 접근 방식은 많은 패키지 관리자들이 기본적으로 수행하는 것보다 실제로 더 엄격합니다; 이는 복잡성이 아닌 기능입니다.
2단계: Docker 엔진 설치
[6:00 - 7:10] 저장소가 등록되면, Docker 설치는 하나의 apt 명령입니다:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginsudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin프롬프트가 나타나면 확인하고, apt가 다운로드 및 설치를 처리합니다. Docker는 부팅 시 자동으로 시작되도로 구성되어, 모든 재시작 후 백그라운드에서 실행됩니다.
모든 작동이 잘 되는지 확인하려면 hello-world 컨테이너를 실행하세요:
sudo docker run hello-worldsudo docker run hello-worldDocker는 이미지를 가져오고, 실행하며, 확인 메시지를 출력합니다. 그 출력은 설치가 정상적으로 작동함을 의미합니다. hello-world 컨테이너는 한 번 실행하고 종료하도록 설계되었습니다; 이는 엔진이 응답하는지를 검증하기 위한 것입니다.
3단계: Docker를 sudo 없이 실행하기 (개인용 기계 전용)
[7:45 - 10:30] 기본적으로 Docker 명령은 컨테이너 관리가 특권 작업이기 때문에 sudo을 필요로 합니다. 공유 서버나 프로덕션 기계에서는 이대로 두세요. 개인 개발 머신의 경우, 스스로 docker 그룹에 추가하면 접두사가 제거됩니다:
sudo usermod -aG docker $USERsudo usermod -aG docker $USER-aG은 현재 계정을 추가합니다. 대소문자 구분은 중요합니다: $USER은 대문자여야 합니다. 바꾼 것은 로그아웃하고 다시 로그인하기 전까지 효력이 발생하지 않습니다; 전체 시스템 재시작이 그룹 멤버십을 올바르게 적용하는데 단순 로그아웃보다 더 신뢰할 만합니다. 한 번 되면 docker run hello-world은 sudo 없이 작동합니다.
이는 편리함과 보안을 맞바꾼 것입니다. 개발용 기계에만 유지하세요.
4단계: Portainer를 위한 볼륨 생성
[11:30 - 12:45] Portainer를 실행하기 전에, 컨테이너 재시작 및 교체 시 데이터를 유지하기 위해 명명된 볼륨을 생성하세요:
docker volume create portainer_datadocker volume create portainer_data컨테이너는 설계상 임시적이며, 하나를 제거하면 내부에 저장된 모든 것이 소멸됩니다. 볼륨은 Docker가 관리하는 경로에 컨테이너 수명 주기 외부에 존재합니다, 따라서 Portainer의 구성은 제거 및 재구축하더라도 생존합니다.
5단계: Portainer 컨테이너 실행
[12:45 - 14:10] Portainer CE 자체가 Docker 컨테이너입니다. 전체 실행 명령은 다음과 같습니다:
docker run -d -p 9000:9000 --name portainer \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-cedocker run -d -p 9000:9000 --name portainer \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce분석하면: -d은 백그라운드로 남아 있도록 컨테이너를 분리하여 실행합니다. -p 9000:9000은 호스트 포트 9000을 노출시키고 이를 컨테이너 내부의 일치하는 내부 주소로 라우팅합니다. 첫 번째 -v은 Docker 소켓을 마운트하여 Portainer가 다른 컨테이너와 이미지를 볼 수 있게 하며, 제어할 수 있게 합니다. 이렇게 소켓을 연결하는 것은 GUI가 전체 Docker 환경을 읽고 관리할 수 있도록 해줍니다. 두 번째 -v은 방금 생성한 볼륨을 컨테이너 내부의 /data에 연결하여 상태를 지속시킵니다.
portainer/portainer-ce (커뮤니티 에디션)에서 가져옵니다. portainer.io 웹사이트는 유료 Enterprise 티어를 강조하지만, CE는 로컬 및 개인 사용에 대해 무료로 사용 가능합니다.
Portainer UI 탐색
[14:10 - 17:30] 컨테이너가 시작되면 브라우저를 열고 http://localhost:9000으로 이동하십시오. Portainer는 처음 액세스 시 관리자 비밀번호를 만들도록 요청합니다; 12자 이상이어야 합니다. 로그인 후 추가 환경을 추가하지 않고 빠른 설치 마법사를 클릭한 다음, 대시보드에서 로컬 환경을 선택하세요.
홈 뷰는 요약을 보여줍니다: 다운로드된 이미지, 존재하는 컨테이너, 구성된 네트워크 및 사용 중인 볼륨. 각 섹션을 클릭하면 전체 제어를 제공합니다. 이미지 아래에서 설치 중 수행된 두 번의 가져오기에서 hello-world 및 Portainer CE 이미지를 볼 수 있습니다. 컨테이너에서는 hello-world의 두 번 실행이 중지 상태로 Portainer 자체와 함께 나타나며 이는 활성 상태로 실행됩니다.
컨테이너 패널에서 항목을 시작, 중지, 제거할 수 있습니다. 컨테이너를 선택하고 로그를 클릭하면 출력을 나타냅니다. hello-world 항목은 두 번 실행된 익숙한 인사말 문구를 표시합니다. 컨테이너를 다시 시작하고 로그를 확인하면 새로운 출력이 처음 아래에 추가 되었음을 확인할 수 있습니다.
볼륨은 그 마운트 경로와 함께 나열됩니다. portainer_data 항목은 /var/lib/docker/volumes/ 아래에서 엔진이 모든 명명된 볼륨 데이터를 디스크에 저장하는 위치를 보여줍니다.
Portainer vs Docker Desktop
[17:30 - 18:10] Docker Desktop은 GUI와 함께 배포되지만, 상당한 오버헤드를 지니고 있습니다; 이는 실제 워크로드를 위해 시스템 리소스를 확보하고자 하는 Linux 개발 기기에서 중요합니다. Portainer CE는 자체 컨테이너로 실행되며, 훨씬 적은 메모리 및 CPU를 소모합니다. 이미지 및 컨테이너를 탐색, 로그를 읽고, 볼륨을 관리하며, 서비스 시작과 중지를 모든 무게 없이 수행하는 실용적 요구를 충족합니다.
다음에는 무엇이 올까요?
[17:50 - 18:30] Docker 및 Portainer 세트업이 완료되면, 시리즈의 다음 단계는 컨테이너로 SQL Server 실행입니다. 단일 docker run 명령은 이미지를 가져오고 인스턴스를 시작합니다. Portainer 컨테이너 패널에서 세션 종료 시 중단하고 다시 필요할 때 재시작할 수 있습니다. 이 패턴은 연속적으로 실행하기에 비용이 많이 드는 Redis 및 기타 인프라 도구에도 동일하게 적용되지만, 컨테이너화하기에는 간단합니다.
결론
[18:30 - 끝] 요약: Docker의 GPG 키를 사용하여 apt 저장소를 등록하고, apt을 통해 엔진을 설치하며, 필요에 따라 개인 머신에서 사용자를 docker 그룹에 추가하고, Portainer를 위한 명명된 볼륨을 생성하고, 포트 9000에 매핑된 portainer/portainer-ce 컨테이너를 실행하십시오. 그 시점부터, localhost:9000은 Linux에서 컨테이너 관리를 위한 일상 업무를 GUI로 제공하여 CLI에 손을 대지 않고도 일상 작업을 수행할 수 있게 합니다.
작동 중인 생동감 넘치는 기계 설치를 보고, Tim Corey's YouTube 채널에서 전체 비디오를 시청하세요.

