DigitalOcean의 Container Registry를 사용하여 Docker 이미지를 푸시 및 풀하는 방법 Docker로 자동화된 프로덕션 배포를 위한 전략 Flutter로 SharedPreferences를 사용하여 앱 설정을 저장하는 방법 Docker 이미지 태그를 추가, 교체 및 제거하는 방법 GitLab CI 파이프라인에서 변수를 설정하는 방법 DigitalOcean에 유동 IP가 있습니까? 지속적 통합(CI)을 위해 Github 작업을 사용해야 합니까?

0
295

디지털오션 로고

DigitalOcean의 Container Registry는 클라우드에 Docker 이미지를 저장하고 배포할 수 있는 개인 공간을 제공합니다. 이 서비스는 이미지 저장소를 제공할 뿐만 아니라 DigitalOcean의 다른 서비스에도 통합됩니다. 저장된 이미지를 App Platform에 배포하고 관리형 Kubernetes 클러스터와 함께 사용할 수 있습니다.

이점 및 기능

Container Registry는 DigitalOcean 계정 내에서 Docker 이미지를 유지할 수 있게 해주는 Docker Hub 경쟁업체입니다. 다른 DigitalOcean 기능으로 해당 이미지에 액세스할 때 이상적입니다. 앱의 프라이빗 이미지에 대해 별도의 유료 Docker Hub 계정을 설정할 필요가 없습니다.

Container Registry에 보관된 데이터는 여러 DigitalOcean 데이터 센터 지역에서 자동으로 로드 밸런싱됩니다. 이렇게 하면 컨테이너를 시작하고 시스템으로 가져올 때 이미지 검색이 가속화됩니다. 다른 DigitalOcean 기능과 달리 Container Registry의 데이터 센터를 수동으로 선택할 수 없습니다.

DigitalOcean의 레지스트리 구현은 OCI와 호환되므로 친숙한 에코시스템 도구를 사용하여 상호 작용할 수 있습니다. 다음과 같은 명령 docker push 그리고 docker pull 레지스트리의 자격 증명을 CLI에 추가하면 “그냥 작동”합니다. 마찬가지로 Kubernetes와 같은 오케스트레이터는 레지스트리에서 이미지를 참조하는 데 문제가 없습니다.

레지스트리 생성

Container Registry는 무료로 제공되지만 무료 플랜에는 몇 가지 심각한 제한 사항이 있습니다. 하나의 이미지 리포지토리(최상위 이미지 이름), 500MB의 스토리지 및 500MB의 아웃바운드 데이터 전송 한도가 제공됩니다. 서비스 평가에는 적합하지만 장기간 사용하기에는 적합하지 않을 수 있습니다. $5/월 베이직 플랜은 5개의 저장소와 5GB를 제공하는 반면 $20/Professional 버전은 무제한 저장소와 100GB 스토리지를 제공합니다. 스토리지 초과분은 GB당 $0.02로 청구됩니다.

광고

DigitalOcean 제어판에 로그인하고 왼쪽 사이드바에서 “컨테이너 레지스트리” 링크를 클릭하여 레지스트리를 생성합니다. 새 레지스트리에 이름을 지정하고 스토리지 요금제를 선택하십시오. 이름은 모든 DigitalOcean 레지스트리에서 전역적으로 고유해야 하므로 첫 번째 선택 항목을 사용하지 못할 수 있습니다. 문자, 숫자, 하이픈을 포함하여 최대 63자로 구성되어야 합니다.

새 레지스트리를 만드는 데 몇 초가 걸릴 수 있습니다. 프로세스가 완료되면 레지스트리 대시보드 화면으로 이동합니다.

Docker CLI 연결

다음 단계는 Docker CLI를 레지스트리에 연결하는 것입니다. Docker에 레지스트리 자격 증명을 제공해야 계정을 사용하여 이미지를 푸시하고 가져올 수 있습니다. 이를 달성하는 세 가지 다른 방법이 있습니다.

Doctl 사용

DigitalOcean의 공식 명령줄 유틸리티인 Doctl에는 Docker 클라이언트가 Container Registry와 함께 작동하도록 구성하는 편리한 스크립트가 포함되어 있습니다.

이 방법을 사용하려면 Doctl을 설치하고 DigitalOcean 계정에 인증해야 합니다. 다음 명령을 실행하여 통합을 설정합니다.

doctl registry login

DigitalOcean API 토큰 사용

DigitalOcean API 토큰을 사용하여 Container Registries에 인증할 수 있습니다. DigitalOcean 계정의 왼쪽 사이드바 하단에 있는 “API” 링크를 클릭하여 토큰을 생성하십시오. “새 토큰 생성”을 클릭하고 이름을 지정한 다음 다음 팝업에서 “토큰 생성”을 누릅니다.

광고

토큰 값이 표시됩니다. 나중에 검색할 수 없으므로 메모해 두십시오. 이제 CLI로 돌아가서 docker login 레지스트리에 연결하는 명령:

docker login registry.digitalocean.com

사용자 이름과 암호를 입력하라는 메시지가 표시됩니다. 생성된 API 토큰의 값을 사용하십시오. 둘 다 필드. 이제 Docker는 계정에 속한 DigitalOcean 레지스트리와 상호 작용할 수 있습니다.

Docker 자격 증명 파일 다운로드

API 키를 생성하거나 Doctl을 사용하지 않으려면 Container Registry 대시보드 페이지로 이동하여 오른쪽 상단에 있는 파란색 “작업” 버튼을 클릭하세요. 메뉴에서 “Docker 자격 증명 다운로드”를 선택합니다.

이 파일은 Docker와 호환됩니다. config.json 여기에는 레지스트리에 대한 자격 증명이 포함됩니다. 당신은 그것을 당신의 메인과 병합 할 수 있습니다 ~/.docker/config.json 파일을 사용하거나 --config 플래그 docker 명령:

docker --config ~/downloaded-config.json pull registry.digitalocean.com/<your-registry-name>/example-image:latest

Docker를 사용하여 이미지 푸시 및 풀

Docker가 올바르게 구성되면 이제 CLI를 사용하여 Container Registry로 이미지를 푸시하고 가져올 수 있습니다. 이미지는 다음 형식으로 태그를 지정해야 합니다.

registry.digitalocean.com/<your-registry-name>/example-image:latest

다음은 기존 이미지의 복사본을 레지스트리에 푸시하는 간단한 예입니다.

docker pull httpd:latest
docker tag httpd:latest registry.digitalocean.com/<your-registry-name>/httpd:latest
docker push registry.digitalocean.com/<your-registry-name>/httpd:latest

광고

DigitalOcean 제어판에서 레지스트리 대시보드로 이동합니다. 새로 푸시된 이미지가 레지스트리에 표시되어야 합니다. 이미지를 클릭하면 사용 가능한 태그를 볼 수 있습니다. 맨 오른쪽에 있는 세 개의 점 아이콘을 클릭하고 메뉴에서 선택하여 특정 태그 또는 이미지에 사용 가능한 모든 태그를 삭제합니다.

쓰레기 수거

레지스트리에서 이미지를 삭제하면 나머지 매니페스트에서 더 이상 사용하지 않는 중복 레이어가 남을 수 있습니다. 이러한 계층은 여전히 ​​스토리지 비용에 포함됩니다.

DigitalOcean은 고아 레이어 및 매니페스트를 제거하기 위한 가비지 수집 기능을 제공합니다. 가비지 수집으로 저장 공간을 확보할 수 있는 경우 레지스트리 대시보드 화면에 타일이 표시됩니다. 프로세스를 시작하려면 “가비지 비우기”를 클릭하십시오.

정리의 일부로 태그가 지정되지 않은 매니페스트를 제거할지 여부를 선택할 수 있는 팝업 대화 상자가 표시됩니다. 태그가 할당되지 않은 유효한 이미지이므로 다음과 같은 전체 ID로만 참조할 수 있습니다. registry.digitalocean.com/<your-registry-name>/example-image:a1bc23. 이러한 매니페스트를 의도적으로 유지하지 않는 한 일반적으로 삭제하는 것이 바람직합니다.

가비지 컬렉션은 사용하지 않는 레이어가 모두 삭제될 때까지 레지스트리를 읽기 전용 상태로 만듭니다. 정리 기간 동안 새 푸시가 거부됩니다. 기존 쓰기가 완료될 때까지 수집이 시작되지 않으므로 프로세스를 시작한 후 약간의 지연이 있을 수 있습니다. 제어판의 레지스트리 대시보드 페이지에 진행 상황이 표시됩니다.

DigitalOcean은 자동 가비지 수집을 제공하지 않습니다. 그러나 Doctl 및 DigitalOcean API를 사용하여 프로세스를 실행할 수 있으므로 자신의 스크립트를 작성하고 다음을 사용하여 예약할 수 있습니다. cron.

결론

DigitalOcean의 Container Registry는 Docker 이미지를 저장하는 편리한 방법을 제공합니다. 기존 DigitalOcean API 토큰을 사용하여 레지스트리에 인증합니다. API 토큰은 계정에 대한 전체 액세스 권한을 부여한다는 점을 명심해야 합니다. 이는 레지스트리 액세스에 국한되지 않습니다.

광고

Docker Hub를 위해 Container Registry를 사용해야 하는지 여부는 이미지로 무엇을 할 것인지에 달려 있습니다. DigitalOcean에 배포하는 경우 이미지를 인프라와 함께 배치하여 성능을 최대화하는 것이 좋습니다. Docker Hub는 보안 문제에 신속하게 플래그를 지정할 수 있는 자동 이미지 재구축 및 취약성 스캔과 같은 다른 영역에서도 이점이 있습니다. DigitalOcean의 서비스에는 이 중 어느 것도 없으며 대신 순수하고 단순한 이미지 저장에 중점을 둡니다.