개인 또는 공개 저장소에 관계없이 저장소를 사용하지 않고 한 시스템에서 다른 시스템으로 Docker 이미지를 전송하는 방법은 무엇입니까?
VirtualBox에서 자체 이미지를 만들고 완료되면 다른 컴퓨터에 배포하여 실제 사용을 시도합니다.
Red Hat Linux와 같은 자체 이미지를 기반으로하기 때문에 Dockerfile에서 다시 만들 수 없습니다. 내 dockerfile은 쉽게 휴대 할 수 없습니다.
사용할 수있는 간단한 명령이 있습니까? 아니면 다른 해결책?
답변
Docker 이미지를 tar 파일로 저장해야합니다.
docker save -o <path for generated tar file> <image name>
다음과 같은 일반 파일 전송 도구를 사용하여 새로운 시스템에 이미지를 복사 cp
, scp
또는 rsync
(큰 파일 선호). 그런 다음 이미지를 Docker에로드해야합니다.
docker load -i <path to image tar file>
추신 : sudo
모든 명령 이 필요할 수 있습니다 .
편집 : -o를 사용하여 파일 이름 (디렉토리뿐만 아니라)을 추가해야합니다 (예 :
docker save -o c:/myfile.tar centos:16
답변
SSH를 통해 Docker 이미지 전송, 즉석에서 컨텐츠를 압축 :
docker save <image> | bzip2 | \
ssh user@host 'bunzip2 | docker load'
pv
파이프 중간에 배치 하여 전송이 어떻게 진행되는지 확인하는 것도 좋습니다.
docker save <image> | bzip2 | pv | \
ssh user@host 'bunzip2 | docker load'
답변
파일 경로 또는 공유 NFS 위치에 이미지를 저장하려면 다음 예를 참조하십시오.
다음을 수행하여 이미지 ID를 얻으십시오.
sudo docker images
ID가 “매트릭스-데이터”인 이미지가 있다고 가정 해보십시오.
id로 이미지를 저장하십시오.
sudo docker save -o /home/matrix/matrix-data.tar matrix-data
경로에서 호스트로 이미지를 복사하십시오. 이제 다음을 사용하여 로컬 Docker 설치로 가져옵니다.
sudo docker load -i <path to copied image file>
답변
먼저 Docker 이미지를 zip 파일로 저장하십시오.
docker save <docker image name> | gzip > <docker image name>.tar.gz
그런 다음 아래 명령을 사용하여 내 보낸 이미지를 Docker에로드하십시오.
zcat <docker image name>.tar.gz | docker load
답변
운영
docker images
호스트의 이미지 목록을 볼 수 있습니다. awesomesauce 라는 이미지가 있다고 가정 해 봅시다 . 터미널 cd
에서 이미지를 내보내려는 디렉토리로. 이제 다음을 실행하십시오.
docker save awesomesauce:latest > awesomesauce.tar
tar 파일을 썸 드라이브 등에 복사 한 다음 새 호스트 컴퓨터에 복사하십시오.
이제 새 호스트에서 다음을 수행하십시오.
docker load < awesomesauce.tar
이제 커피를 마시고 해커 뉴스를 읽으십시오 …
답변
컨테이너 파일 시스템을 평평하게 내보내려면 다음을 사용하십시오.
docker export CONTAINER_ID > my_container.tar
해당 cat my_container.tar | docker import -
이미지를 가져 오는 데 사용 합니다.
답변
docker-machine을 사용할 때 다음 mach1
과 mach2
함께 사용하여 이미지를 복사 할 수 있습니다 .
docker $(docker-machine config <mach1>) save <image> | docker $(docker-machine config <mach2>) load
물론 pv
중간에 붙어서 진행률 표시기를 얻을 수도 있습니다 .
docker $(docker-machine config <mach1>) save <image> | pv | docker $(docker-machine config <mach2>) load
docker-machine config
현재 기본 docker-host를 사용하기 위해 서브 쉘 중 하나를 생략 할 수도 있습니다 .
docker save <image> | docker $(docker-machine config <mach>) load
현재 docker-host에서 이미지를 복사 mach
또는
docker $(docker-machine config <mach>) save <image> | docker load
mach
현재 docker-host 에서 복사 합니다.