2

У меня есть изображение Docker, которое я построил:

» docker images --no-trunc | grep discoball/nginx
discoball/nginx                 latest              623444f1777c        21 hours ago        126 MB

Я хотел бы перенести это на удаленный сервер; docker save docker load - это команды, способные сериализовать и десериализовать изображение в / из файла, что должно быть именно тем, что мне нужно. Однако я не могу заставить их работать.

Я сохраняю изображение:

» docker save discoball/nginx > nginx-latest.tar.gz

Затем попытайтесь восстановить его на удаленном компьютере:

» cat nginx-latest.tar.gz | ssh "$IP" docker load

Эта команда выполняется успешно. Тем не менее, docker images на пульте дистанционного управления указывают, что изображение не было сделано; скорее то, что кажется старой версией, все еще присутствует:

» ssh "$IP" docker images --no-trunc | grep discoball/nginx
discoball/nginx        latest              2678dc27dd46        21 hours ago        126 MB

Обратите внимание, что идентификатор изображения отличается; Я предполагаю, что это старая версия моего изображения. Поиск самого идентификатора изображения также не дает результатов на сервере:

» ssh "$IP" docker images --all | grep 623444
(last command returned 1.)
»

Что я делаю неправильно?


Так что теперь я копаюсь в сгенерированном файле .tar.gz ; файл repositories в нем, кажется, указывает, что удаленная машина имеет право:

» tar -xf nginx-latest.tar.gz -O repositories
{"discoball/nginx":{"latest":"2678dc27dd46469bc8692c2e5ad71b57ae573b1444531fcd1f76798638f84f5c"}}

Это номер, который я вижу на пульте. Но почему, черт возьми, docker save пишут , что из, а не 623444f1777c (Являются ли идентификаторы Docker-изображений не просто криптографическими хешами изображения и / или слоя?) Если пульт имеет один и тот же образ, почему у него есть другое изображение ID? (Я не знаю, как это проверить на данный момент, потому что до этого момента я бы сказал, что "то же изображение" было "идентичным изображением"…)

0