#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.