Как загрузить и запустить автономный образ docker, созданный с помощью сборки docker-compose?

#docker #docker-compose

#docker #docker-compose

Вопрос:

Я новичок в docker и занимаюсь этим последние несколько дней. Мне удалось успешно использовать docker-compose для многоконтейнерного развертывания, включающего сервер приложений (flask gunicorn) и веб-сервер (nginx).

Теперь я хотел бы воссоздать развертывание на автономном компьютере. Проведя исследование, кажется, что большинство из них упомянули использование docker save и docker load для переноса поверх базовых изображений. Однако мне интересно, возможно ли воссоздать развертывание из образа, созданного сборкой docker-compose? Причина в том, что я хотел бы пропустить весь процесс развертывания зависимостей моего пакета python для автономного использования, что мне пришлось бы сделать для метода, начиная с базовых изображений.

Я попытался сохранить это конкретное изображение (вывод сборки docker-compose) и загрузить его на автономный компьютер, а затем попробовал docker run и docker-compose up, но оба, похоже, не работают. Хотел бы уточнить у сообщества, возможен ли вообще этот метод, и если да, то как правильно это сделать?

Спасибо!

Комментарии:

1. Какие именно команды вы выполняете и какой результат вы получаете? Docker Compose запускает несколько образов, и, по крайней мере, вам нужно перенести docker-compose.yml файл на удаленный компьютер; docker save сохраняет отдельные изображения, но не содержит никаких инструкций по их запуску и вообще не знает о Compose.

2. Спасибо за ваш быстрый ответ. Я начал docker-compose up с моего файла docker-compose.yml на моем онлайн-компьютере. Это сработало, как и ожидалось. Затем я сделал docker-compose build это, создав изображение с ImageID. Далее было docker save --output filename.tar <imageID> . Затем на автономном компьютере я загрузился docker load --input filename.tar , а затем попытался выполнить docker-compose отсюда, но да, как вы указали, в нем отсутствует файл yml. Даже если я включу файл yml, он не сможет найти путь к сборке. Есть ли вообще какой-либо способ воссоздать многоконтейнерное развертывание из этого ImageID?

3. Нет, поскольку это только одно из изображений, и в файле нет никакой другой информации docker-compose.yml .

Ответ №1:

Чтобы решить мою проблему, я закончил тем, что создал образ каждого отдельного контейнера после установки pip, а затем использовал docker-compose.yml, чтобы просто развернуть их. Как упоминал Дэвид, не представляется возможным развернуть контейнер из одного изображения, выводимого сборкой docker-compose.