미들웨어

Docker Image 폐쇄망 옮기기

feel2 2024. 11. 30. 22:42
반응형

1. 이미지 다운로드 및 저장

인터넷이 연결된 환경에서 필요한 도커 이미지를 다운로드합니다:

docker pull <image_name>:<tag>

다운로드한 이미지를 tar 파일로 저장합니다:

docker save -o <image_name>.tar <image_name>:<tag>

ex) ‘nginix’ 이미지를 다운로드할 경우

docker pull nginx:latest
docker save -o nginx.tar nginx:latest

2. 이미지 파일 이동

scp, ftp, sftp 등 파일 전송 명령어는 많다.

scp를 사용한 예는 다음과 같다.

scp [옵션] [파일명] [원격지_id]@[원격지_ip]:[받는위치]
scp image.tar root@172.10.50.208:~

3. 이미지 로딩 및 태깅

폐쇄망 환경에서 tar 파일을 로드합니다:

docker load -i nginx.tar

로드한 이미지를 폐쇄망 레지스트리에 푸쉬할 수 있도록 태깅합니다. 먼저 레지스트리 주소를 확인합니다:

docker tag nginx:latest <폐쇄망_레지스트리_URL>/nginx:latest

ex) 폐쇄망 레지스트리 URL이 registry.example.com인 경우:

docker tag nginx:latest registry.example.com/nginx:latest

4. 이미지 푸쉬

이제 태깅한 이미지를 폐쇄망의 프라이빗 도커 레지스트리에 푸쉬합니다:

docker push <폐쇄망_레지스트리_URL>/nginx:latest

ex)

docker push registry.example.com/nginx:latest

** 만약 진행 중에

...
unauthorized: No auth
...

이런 에러가 발생한다면

docker login localhost:5000

로그인 후 위의 과정을 진행하면 잘 된다.

(**) 에러 사항

"exec /bin/cat: exec format error" 메시지가 발생할 경우

잘못된 실행 파일 형식: 컨테이너 이미지가 호스트 시스템의 아키텍처와 맞지 않을 때 발생합니다. 예를 들어, ARM 아키텍처에서 빌드된 이미지를 x86_64 시스템에서 실행하려고 할 때 발생할 수 있습니다.

이 문제를 해결하기 위해 몇 가지 검토해야 할 사항과 수정 방법을 제안합니다.

1. 컨테이너 이미지의 아키텍처 확인

컨테이너 이미지가 호스트 시스템의 아키텍처와 일치하는지 확인해야 합니다.

# Docker 이미지의 아키텍처 확인
docker inspect <image_name> --format='{{.Architecture}}'

호스트 시스템의 아키텍처도 확인하세요:

uname -m

2개 비교해서 다르면 같은 아키텍처 가진 쪽에서 이미지 빌드해서 넣어주기

반응형

'미들웨어' 카테고리의 다른 글

Jenkins - Pipeline 형식  (0) 2024.12.15
nexus repository 연동 (Maven)  (1) 2024.12.08