인터넷에 연결되지 않은 컴퓨터로 전송하기위한 도커 이미지 다운로드


57

랩톱이 인터넷에 연결되어 있지만 엄격하게 제어되는 사무실에서 일하고 있습니다. 무단 소프트웨어를 설치할 수 없습니다.

내 개발 워크 스테이션은 내가 원하는대로 할 수 있지만 인터넷에 연결되어 있지 않습니다.

허브에서 Docker 이미지를 파일로 다운로드하여 개발 워크 스테이션에 스니커 링 할 수있는 방법이 있습니까? RPM 또는 Ruby Gems를 다운로드하여 CD에 굽는 방법과 유사합니까? 또는 'docker pull'명령을 사용하여 이미지를 다운로드하는 유일한 방법입니까?

답변:


86

짧게 : saveCLI 명령을 사용하십시오 .

https://docs.docker.com/engine/reference/commandline/save/


인터넷에 액세스 할 수있는 컴퓨터에서 이미지를 가져올 수 있습니다.

sudo docker pull ubuntu

그런 다음이 이미지를 파일로 저장할 수 있습니다

sudo docker save -o ubuntu_image.docker ubuntu

오프라인 컴퓨터 (USB / CD / 무엇이든)에서 파일을 전송하고 파일에서 이미지를로드하십시오.

sudo docker load -i ubuntu_image.docker

(이전 버전에서는이 기능이 추가되었습니다 docker load image.docker. 자세한 내용은 주석을 참조하십시오.)


대단해, 오늘 저녁에 소용돌이를 줄 것이다. 감사합니다!
shearn89

2
지나 가서 더 이상을 사용하지 않고 docker load <image>대신 사용하십시오 docker load < ubuntu_image.docker. docs.docker.com/engine/reference/commandline/load
Lionel Chan

11
해야했다 sudo docker load -i ubuntu_image.docker또는 작동하지 않을
John Culviner

dockertools를 사용하여 로컬 컴퓨터를 가져 와서 파일을 개발 환경으로 옮긴 후 @ shearn89와 동일한 설정을 얻었습니다 .'Windows에서 Linux 이미지를로드 할 수 없습니다 '라는 오류가 발생합니다. 로컬 머신 및 개발 환경은 모두 Windows입니다.이 워크 플로우에서 Linux 이미지가 작성되는 원인을 알고 있습니까?
Ryan Haunfelder

27

이미 수용된 답변이 있음을 알고 있지만 "도커를 사용하여 검색을 수행하지 않고 도커 이미지를 다운로드하려면 어떻게해야합니까?"라는 질문을보다 직접적으로 해결하는이 솔루션을 제공하고 싶었습니다.

회사 정책에 따라 사용하려는 파일 (일반적으로 URL을 통해)을 팀에 제공해야하는 비슷한 문제가 있습니다. 그런 다음 다양한 스캔 및 감사를 수행 한 다음 파일을 연결이 끊긴 개발 네트워크에 배치합니다. Docker를 사용하여 파일을 검색 한 다음 파일을 내보내고 해당 팀에 전달할 수 없으므로 제공된 다른 답변은 옵션이 아닙니다.

운 좋게도 StackOverflow 에서이 답변을 찾았 습니다 .GitHub의 samalba가 제공하는 유용한 도구를 사용하는 것이 좋습니다 : https://github.com/samalba/docker-registry-debug

물론, 그 도구는 Docker를 사용하여 만들어졌으며 필요한 이유 중 일부는 Docker에 대한 공개 액세스 권한이 없기 때문입니다. :). 따라서 해당 옵션이 없으므로 여기에서 취한 단계를 설명합니다 (이것은 모두 해당 리포지토리에서 커밋 05fffc4344fd6f866f84c403caae3ba81193dd45입니다).

$ go get github.com/dustin/go-humanize
$ go build
$ ./docker-registry-debug --help
$ ./docker-registry-debug curlme docker ubuntu

해당 명령의 출력은 파일을 다운로드하는 데 사용할 수있는 완전한 curl 명령 행입니다.

# Reading user/passwd from env var "USER_CREDS"
# No password provided, disabling auth
# Getting token from https://index.docker.io
# Got registry endpoint from the server: https://registry-1.docker.io
# Got token: signature=e145911c2e458b3842e4e92c90bbf5bf2c17bd56,repository="library/docker",access=read
curl -i --location-trusted -I -X GET -H "Authorization: Token signature=e145911c2e458b3842e4e92c90bbf5bf2c17bd56,repository="library/docker",access=read" https://registry-1.docker.io/v1/images/ubuntu/layer

이것이 다른 누군가를 돕기를 바랍니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.