Я работаю в офисе, где мой ноутбук подключен к Интернету, но под жестким контролем. Мне не разрешено устанавливать на него неавторизованное программное обеспечение.
Моя рабочая станция для разработки предназначена мне, как мне нравится, но у нее нет подключения к Интернету.
Есть ли у меня способ загрузить образы 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=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
Надеюсь, это поможет кому-то другому!