답변:
Docker 이미지는 파일 시스템 계층으로 저장됩니다. Dockerfile의 모든 명령은 레이어를 만듭니다. docker commit
명령 행에서 일부를 변경 한 후 ( docker run
아마도) 레이어를 작성할 수도 있습니다 .
이 레이어는 기본적으로에 저장됩니다 /var/lib/docker
. 거기에서 (이론적으로) 체리 파일을 선택하여 다른 도커 서버에 설치할 수는 있지만 Docker가 사용하는 내부 표현을 가지고 노는 것은 좋지 않은 생각 일 것입니다.
이미지를 푸시하면이 레이어가 레지스트리 (기본적으로 도커 허브 레지스트리로 전송됩니다. 다른 레지스트리 접두어로 이미지에 태그를 지정하지 않는 한 ...)에 저장됩니다. 푸시 할 때 레이어 ID는 이미 레이어가 로컬에 있는지 또는 다운로드해야하는지 확인하는 데 사용됩니다. docker history
어떤 레이어 (다른 이미지)가 사용되는지 (그리고 어느 명령으로 레이어를 만들 었는지) 엿볼 수 있습니다 .
도커 허브 레지스트리로 푸시하지 않고 이미지를 공유하는 옵션의 경우 가장 좋은 옵션은 다음과 같습니다.
docker save
이미지 또는 docker export
컨테이너. tar 파일을 표준 출력으로 출력하므로 다음과 같은 작업을 수행하려고 docker save 'dockerizeit/agent' > dk.agent.latest.tar
합니다. 그런 다음 docker load
또는 docker import
다른 호스트를 사용할 수 있습니다 .
개인 레지스트리를 호스팅하십시오. - 구식, 설명 참조 docker registry 이미지를 참조하십시오 . 필요에 따라 시작하고 중지 할 수 있는 s3 백업 레지스트리 를 만들었습니다 (모든 상태는 선택한 s3 버킷에 유지됨). 이것은 또한 레지스트리로 푸시 할 때 발생하는 일을 관찰하는 흥미로운 방법입니다.
docker hub와 관련하여 우려되는 사항이 여기에도 적용될 수 있지만 quay.io 와 같은 다른 레지스트리를 사용하십시오 (개인적으로 시도하지는 않았습니다).
docker save
: 다른 이미지 (예 :)에서 파생 된 이미지를 python:2.7
레지스트리로 푸시하면 변경되지 않는 한 상위 이미지를 두 번 이상 업로드 할 필요가 없습니다. 유사한 파일 크기 최적화를 위해 부분 이미지를 저장할 수 있습니까? 나는 여러 이미지를 가진 애호가이며 개인 레지스트리 비용을 지불하고 싶지 않기 때문에이 농구 대를 뛰어 넘고 있습니다.
docker build
호스트 에서 src 파일을 가져올 수 있습니까?
npm install
... 메모리가 적고이 단계가 항상 실패하기 때문에 호스트에서 빌드 할 수 없습니다 ( github.com/npm/npm/issues/5021 참조 )
Docker Hub 자체를 사용하지 않으려면 Artifactory by JFrog에서 고유 한 Docker 저장소를 호스팅 할 수 있습니다.
https://www.jfrog.com/confluence/display/RTF/Docker+Repositories
그런 다음 자신의 서버에서 실행됩니다.
CoreOS와 같은 다른 호스팅 공급 업체도 이용할 수 있습니다.
http://www.theregister.co.uk/2014/10/30/coreos_enterprise_registry/
quay.io를 구입 한