Загрузка образа docker для передачи на компьютер, не подключенный к Интернету

Я работаю в офисе, где мой ноутбук подключен к Интернету, но жестко контролируется. Мне не разрешается устанавливать на него несанкционированное программное обеспечение.

Моя рабочая станция разработки принадлежит мне, и я могу делать с ней все, что мне заблагорассудится, но у нее нет подключения к Интернету.

Есть ли у меня какой-нибудь способ загрузить изображения Docker из концентратора в виде файла, который я мог бы затем загрузить через sneaker-net на свою рабочую станцию разработчика? Аналогично тому, как я могу загружать RPM или Ruby Gems и записывать их на компакт-диск? Или это единственный способ загрузки изображений с помощью команды "docker pull"?

Короче говоря: используйте save Команда CLI.

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, смотрите Комментарии для получения дополнительной информации.)

Я понимаю, что уже есть принятый ответ, однако я хотел предложить это решение, которое, как мне кажется, более непосредственно отвечает на заданный вопрос: "Как мне загрузить изображение Docker, не используя Docker для выполнения извлечения?"

У меня аналогичная проблема, когда политика моей компании требует, чтобы я предоставил команде файл (ы) (обычно с помощью URL-адреса), который я хочу использовать. Затем они выполнят различные проверки и проверки, а затем разместят файл (ы) в нашей отключенной сети разработки. Я не могу использовать Docker для извлечения файла, затем экспортировать его и передать этой команде, поэтому другой предоставленный ответ не был для меня вариантом.

К счастью, я нашел этот ответ на StackOverflow, который рекомендует использовать полезный инструмент, предоставленный samalba на GitHub: 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=readcurl -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

Надеюсь, это поможет кому-то еще!