Unregistry: Docker 이미지 직접 전송, SSH 및 CI/CD 지원

Unregistry – “docker push”를 레지스트리 없이 서버에 직접 전송

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

  • *DevOps 엔지니어, CI/CD 개발자, 클로즈드 네트워크 환경 운영자**
  • 난이도: 중간 수준 (Docker 및 SSH 기초 지식 필요)*

핵심 요약

  • UnregistrySSH를 통해 Docker 이미지를 직접 원격 서버로 전송하는 경량 레지스트리 툴로, 중간 저장소 없이 빠른 이미지 이전 가능
  • docker pussh 명령어로 이미지 전송 시 기존 레이어 건너뛰기컨테이너 데몬 스토리지 활용으로 효율성 극대화
  • 레지스트리 구축/관리 부담 해소폐쇄망, CI/CD 환경에서의 안전한 배포 가능

섹션별 세부 요약

1. 개요

  • Unregistry는 외부 레지스트리 없이 SSH 연결을 통해 Docker 이미지를 원격 서버에 직접 전송하는 오픈소스 툴임
  • Docker Hub, 자체 레지스트리, save/load 방식보다 복잡성과 비효율성 해결
  • 운영 환경 배포, CI/CD, 폐쇄망 환경에서 빠른 이미지 이전의 장점 제공

2. 전통적 이미지 전송 방식의 한계

  • Docker Hub/GitHub Container Registry: 외부 공개 또는 비용 발생
  • 자체 레지스트리: 별도 서비스 운영 및 보안 관리 부담 증가
  • Save/Load: 전체 이미지 전송으로 비효율 발생
  • 서버 재빌드: 시간 및 리소스 낭비, 디버깅 문제 발생

3. Unregistry 사용 방법

  • docker pussh myapp:latest user@server 명령어로 중간 저장소 없이 직접 전송 가능
  • SSH 터널 연결 → 임시 컨테이너 실행 → 필요한 레이어만 전송 → 종료
  • rsync처럼 단순하고 효율적인 방식 제공

4. 기술적 요구 사항

  • Docker CLI (19.03+), OpenSSH 클라이언트, Docker 설치 및 실행 필수
  • SSH 사용자docker 권한 소유해야 하며, containerd-snapshotter 기능 활성화 권장
  • /etc/docker/daemon.json"features": {"containerd-snapshotter": true} 설정 필요

5. 커뮤니티 피드백 및 활용 사례

  • Uncloud 프로젝트에서 멀티 호스트 컨테이너 배포 복잡성 단순화에 활용
  • GitHub Actions 등 CI/CD 툴에서 직접 전송 가능
  • OCI Distribution spec 기반으로 skopeo, crane, BuildKit 등과 호환 가능

결론

  • docker pussh 명령어를 활용해 SSH 연결을 통해 레지스트리 없이 이미지 전송
  • /etc/docker/daemon.json에 containerd-snapshotter 활성화 설정으로 성능 향상
  • 폐쇄망 및 CI/CD 환경에서의 빠른 배포보안 강화를 위해 Unregistry 도입 권장