Unregistry – “docker push”를 레지스트리 없이 서버에 직접 전송
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- *DevOps 엔지니어, CI/CD 개발자, 클로즈드 네트워크 환경 운영자**
- 난이도: 중간 수준 (Docker 및 SSH 기초 지식 필요)*
핵심 요약
- Unregistry는 SSH를 통해 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 도입 권장