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

57

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

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

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

shearn89
источник

Ответы:

87

Коротко: используйте команду 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
Лайонел Чен,
11
должен был сделать, sudo docker load -i ubuntu_image.dockerили это не сработало
Джон Кульвинер,
У меня такая же настройка, как у @ shearn89, после того, как я запустил локальную машину с помощью dockertools и переместил файл в среду разработки, я получаю сообщение об ошибке «не могу загрузить образ linux в windows». И локальный компьютер, и среда разработки являются окнами. Знаете ли вы, что в этом рабочем процессе приводит к созданию образа linux?
Райан Хаунфельдер
27

Я понимаю, что уже есть принятый ответ, однако я хотел предложить это решение, которое, я думаю, более непосредственно отвечает на заданный вопрос: «Как загрузить образ 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=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

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

Дэн
источник