Docker 이미지는 aws-ecr로 푸시 한 후 모든 레이어와 함께 나타나지 않습니다 합니다 /tmp/product-*.zip. docker history

도커 이미지가 product-test:latest있습니다. 어떤 장애물없이 모든 환경에서 실행되고 있지만 그것을 밀어 amazon-ecramazon ec2인스턴스 로 가져 와서 컨테이너를 시작하려고하면 product-test. 에 zip제품 바이너리 파일이 없는 것처럼 오류가 발생 합니다 /tmp/product-*.zip. docker history product-test:latest이미지 수단 ec2과 로컬 dev서버 의 history ( ) 를 비교하려고 할 때 . layers누락 된 부분 이 많다는 것을 알게 되었습니다.

다음은 Dockerfile이 이미지를 만드는 스 니펫입니다 .

MAINTAINER chintanthakar510@gmail.com

ARG binaries

COPY $binaries/.m2  /root/
ADD $binaries/product-*.zip /tmp/

나는 또한 함께 시도 docker save -o product-test_latest.tar product-test:latest와에 Amazon ec2와 함께 그 이미지를로드 docker load --input /home/centos/product-test_latest.tar하지만 여전히 같은 문제에 직면. 도커 이미지에는 아마존 인스턴스에 오지 않는 것이 거의 없습니다. 내가 직면하고있는 것은 정말 이상한 문제입니다.

아마존 EC2 : docker --version: 1.12.6, build ec8512b/1.12.6

OS :CentOS Linux release 7.4.1708 (Core)

내 로컬 개발자 서버 : docker --version: 1.13.1-cs2, build ad32da7

OS :Red Hat Enterprise Linux Server release 7.2 (Maipo)

확인해야 할 가능한 문제는 무엇입니까? 정말 감사하겠습니다. 감사



답변

Docker 이미지를 관리하기 위해 docker savedocker load명령을 사용 하는 것은 권장되지 않습니다. 보안에 관심이 있고 이미지를 Docker Hub로 푸시하지 않으려면 개인 Docker 저장소를 만들거나 이미지를 ECR로 푸시하십시오. 작성된 TAR 파일이 평평 해지고 일부 메타 데이터가 누락되었습니다.

모범 사례는 다음과 같습니다.

  • Private Docker 레지스트리를 만들거나 ECR을 사용하십시오.

  • 정적 파일 및 사용자 정의 바이너리로 Docker 이미지를 빌드하십시오.

  • Docker 이미지를 개인 레지스트리 또는 ECR로 푸시하십시오.

  • EC2의 경우 Private Docker 레지스트리 또는 ECR에서 이미지를 가져옵니다.

이러한 방법으로 docker savedocker load명령을 사용할 때 발생하는 Docker 파일 시스템 계층 문제를 피할 수 있습니다 .