Завантаження зображення докера для передачі на машину, не пов’язану з Інтернетом


57

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

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

Чи є у мене спосіб завантажувати зображення Docker з концентратора у вигляді файлу, який я міг би потім перенести на мою робочу станцію? Подібно тому, як я можу завантажити RPM або Ruby Gems і записати їх на компакт-диск? Або єдиний спосіб завантаження зображень за допомогою команди "тягнути докер"?

Відповіді:


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-зображення?
Ryan Haunfelder

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

Сподіваюсь, це допомагає комусь іншому!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.