플랫폼에 이미지 업로드하기
docker save tar 의 화면 반입 또는 컨테이너 토큰을 이용한 docker push 로 이미지 업로드
필요 권한: 개발DEVELOPER · OPERATOR · ADMIN
이미지를 플랫폼 내장 레지스트리에 등록하는 방법은 두 가지.
| 방법 | 사용하는 경우 | 필요한 것 |
|---|---|---|
| tar 반입 (화면) | 협력사가 파일로 전달한 경우. 반입하는 PC 에는 Docker 불필요 | 브라우저, 개발DEVELOPER · OPERATOR · ADMIN |
| docker push | 이미지를 빌드한 PC 에서 플랫폼 레지스트리에 직접 접근할 수 있는 경우 | Docker, 컨테이너 토큰 |
결과는 동일. 이미지는 <레지스트리 호스트>/<테넌트>/<리포지토리>:<태그> 로 등록되고, 학습 파드가 이 주소에서 이미지를 내려받음.
아키텍처와 크기
- 이미지는 학습 노드와 같은 아키텍처여야 함. 플랫폼은 서버 설정
GEO_MLOPS_SUPPORTED_ARCHITECTURES(기본amd64,arm64)에 있는linux/<아키텍처>이미지만 반입하고, 학습 파드는 이미지와 같은 아키텍처의 노드에만 배치. 노드 아키텍처는 운영자에게 확인(요구 사항). 다른 아키텍처의 컴퓨터에서 빌드하면docker build --platform linux/amd64 …처럼 대상 지정. - CUDA 휠을 포함하면 6~8 GB 인 경우가 많음. 반입 상한은 기본 32 GiB.
tar 로 전달하기 (협력사 측)
docker build -t example/mnist-trainer:v1 .
docker save example/mnist-trainer:v1 | gzip > mnist-trainer-v1.tar.gz # 태그를 반드시 포함한다
sha256sum mnist-trainer-v1.tar.gz > mnist-trainer-v1.tar.gz.sha256
| 항목 | 내용 |
|---|---|
| 형식 | docker save 산출물. Docker 버전에 따라 docker-archive 또는 OCI layout 이며, 둘 다 지원. |
| 압축 | .tar · .tar.gz · .tgz 지원. gzip 사용. |
| 이미지 개수 | 아카이브 하나에 이미지 하나. docker save a b 처럼 여러 개를 담으면 거절. |
| 이름 | 아카이브에 기록된 이름을 그대로 사용. 태그 없이 이미지 ID 로 저장하면 이름이 없으므로 반입하는 측에서 지정 필요. |
| 체크섬 | .sha256 을 함께 전달하면 전송 중 손상 검출 가능 |
예제 MNIST 이미지(CPU 전용 torch)는 압축 시 약 520 MB.
tar 반입하기 (플랫폼 측)
- 왼쪽 메뉴 컨테이너 레지스트리 를 열고 오른쪽 위 이미지 반입 클릭.
- ① 전달받은
.tar.gz선택. ② 리포지토리·태그는 이름을 변경하는 경우에만 입력. 입력하지 않으면 아카이브의 이름(example/mnist-trainer:v1) 사용. 테넌트 접두사(demo/)는 서버가 붙이므로 입력하지 않음. ③ 반입 클릭.이미지 반입: ① docker save 로 만든 .tar/.tar.gz ② 이름을 변경하는 경우에만 입력 ③ 반입 - 파일이 청크로 나뉘어 업로드. 전송이 끝나면 서버가 조립 → 검사 → 레이어 등록을 이어서 수행. 전송 중에 창을 닫으면 업로드 중단. 전송이 끝난 뒤에는 창을 닫아도 서버 측 작업 계속. 작업이 끝나면 이미지 반입 카드에 완료와 최종 주소 표시.
반입 이력: 조립·검사·레이어 등록 후 '완료' 상태와 레지스트리 주소 표시
반입이 실패하면 카드에 사유 표시(아키텍처 불일치, docker save 산출물이 아님 등). 위 화면의 경고(skipped an attestation manifest …)는 최신 Docker 가 함께 저장하는 서명 증명 매니페스트를 건너뛰었다는 뜻이며, 이미지 사용에는 영향 없음.
docker push 로 업로드하기
- 계정 설정 → 컨테이너 토큰 에서 토큰 발급. 토큰은 발급 직후 한 번만 표시되며, 호스트와 사용자명이 채워진
docker login명령도 함께 표시. push 에는develop권한(DEVELOPER·OPERATOR·ADMIN) 필요.컨테이너 토큰 발급 직후: ① 이때 한 번만 표시되는 토큰 ② 호스트가 채워진 docker login 명령 - 로그인 후 태그를 지정해 push.
echo "<발급한 토큰>" | docker login mlops.example.com -u demo --password-stdin
docker tag example/mnist-trainer:v1 mlops.example.com/demo/example/mnist-trainer:v1
docker push mlops.example.com/demo/example/mnist-trainer:v1
- 사용자명은 임의로 지정 가능. 토큰이 비밀번호이고, 테넌트는 토큰에 고정.
- 경로의 첫 부분에는 테넌트 코드(소문자) 지정. 화면에서 반입한 이미지와 같은 형식.
- 레지스트리가 HTTP 로만 제공되면 Docker 데몬에 insecure 설정 필요. 방법은 컨테이너 레지스트리 직접 사용 참고.