docker 활용 나무위키 - 저장소를 사용하지 않고 한 호스트에서 다른 호스트로 도커 이미지를 복사하는 방법





7 Answers

SSH를 통해 Docker 이미지 전송, 즉석에서 컨텐츠 압축하기 :

docker save <image> | bzip2 | \
     ssh user@host 'bunzip2 | docker load'

또한 파이프 중간에 pv 를 두어 전송이 어떻게 진행되는지 확인하는 것이 좋습니다.

docker save <image> | bzip2 | pv | \
     ssh user@host 'bunzip2 | docker load'

( pv : 홈 페이지 , 맨 페이지 에 대한 추가 정보).

tutorial

비공개 또는 공개 여부와 상관없이 저장소를 사용하지 않고 한 컴퓨터에서 다른 컴퓨터로 Docker 이미지를 전송하려면 어떻게해야합니까?

VirtualBox에서 내 자신의 이미지를 만들고 재생하는 데 익숙해졌습니다. 끝나면 실제 사용을 위해 다른 컴퓨터에 배포하려고합니다.

Red Hat Linux와 같은 자체 기반 이미지를 기반으로하므로 Dockerfile에서 다시 만들 수 없습니다.

사용할 수있는 간단한 명령이 있습니까? 또는 다른 해결책?

저장 / 내보내기가 비슷한 목적을 달성 할 수 있습니다 . Docker에서 저장 및 내보내기의 차이점무엇입니까?를 참조하십시오 . , 나는 나의 경우를 위해 save 명령을 선호한다.




먼저 Docker 이미지를 zip 파일에 저장하십시오.

docker save <docker image name> | gzip > <docker image name>.tar.gz

그런 다음 아래 명령을 사용하여 내 보낸 이미지를 Docker에로드합니다.

zcat <docker image name>.tar.gz | docker load



컨테이너 파일 시스템의 병합 된 내보내기를 사용하려면;

docker export CONTAINER_ID > my_container.tar

cat my_container.tar | docker import - 사용 cat my_container.tar | docker import - cat my_container.tar | docker import - 이미지를 가져옵니다.




이미지 ID가 7ebc8510bc2c 인 couchdb- couchdb-cartridge 를 저장해야한다고 가정합니다.

stratos@Dev-PC:~$ docker images
REPOSITORY                             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
couchdb-cartridge                      latest              7ebc8510bc2c        17 hours ago        1.102 GB
192.168.57.30:5042/couchdb-cartridge   latest              7ebc8510bc2c        17 hours ago        1.102 GB
ubuntu                                 14.04               53bf7a53e890        3 days ago          221.3 MB

archiveName 이미지를 tar 파일에 저장하십시오. 이미지를 저장하려면 /media/sf_docker_vm/ 을 사용합니다.

stratos@Dev-PC:~$ docker save imageID > /media/sf_docker_vm/archiveName.tar

환경에서 작동하는 모든 방법 (예 : FTP , SCP 등)을 사용하여 archiveName.tar 파일을 새 Docker 인스턴스로 복사하십시오.

새 Docker 인스턴스에서 docker load 명령을 실행하고 이미지 tar 파일의 위치를 ​​지정하십시오.

stratos@Dev-PC:~$ docker load < /media/sf_docker_vm/archiveName.tar

마지막으로 docker images 명령을 실행하여 docker images 를 사용할 수 있는지 확인하십시오.

stratos@Dev-PC:~$ docker images
REPOSITORY                             TAG        IMAGE ID         CREATED             VIRTUAL SIZE
couchdb-cartridge                      latest     7ebc8510bc2c     17 hours ago        1.102 GB
192.168.57.30:5042/couchdb-cartridge   latest     bc8510bc2c       17 hours ago        1.102 GB
ubuntu                                 14.04      4d2eab1c0b9a     3 days ago          221.3 MB

상세한 게시물을 찾으십시오.




다른 모든 대답은 매우 유용합니다. 나는 방금 같은 문제를 겪고 docker machine scp 쉬운 방법을 찾아 냈다.

Docker Machine v0.3.0 이후 scp가 도입되어 한 Docker 시스템에서 다른 Docker 시스템으로 파일을 복사했습니다. Docker Machine이 SSH 자격 증명을 처리하기 때문에 로컬 컴퓨터에서 AWS EC2 또는 Digital Ocean과 같은 원격 Docker 컴퓨터로 파일을 복사하려는 경우 매우 편리합니다.

  1. docker save 사용하여 이미지를 docker save 과 같이 저장하십시오.

    docker save -o docker-images.tar app-web
    
  2. docker-machine scp를 사용하여 이미지 복사

    docker-machine scp ./docker-images.tar remote-machine:/home/ubuntu
    

원격 Docker 시스템이 remote-machine 이고 tar 파일이 될 디렉토리가 /home/ubuntu 합니다.

  1. Docker 이미지로드

    docker-machine ssh remote-machine sudo docker load -i docker-images.tar
    



당신은 sshfs 사용할 수 있습니다 :

$ sshfs user@ip:/<remote-path> <local-mount-path>
$ docker save <image-id> > <local-mount-path>/myImage.tar



Docker 이미지를 두 개의 원격 레지스터 / 리포지토리간에 이동할 수 있습니다. Docker 버전 1.10.2와 함께 작동하며 c3959b1을 빌드합니다.

docker pull source-registry.com/myProject/myImageName:1.0.0
docker tag source-registry.com/myProject/myImageName:1.0.0 target-remote-registry.com/myProject/myImageName:1.0.0
docker push target-remote-registry.com/myProject/myImageName:1.0.0

이미지를 AWS ECS / ECR 서비스로 마이그레이션하려는 경우 편리한 방법입니다.




Related


Tags

docker