Как проверить наличие обновлений для контейнеризованного (Docker) сервиса?
Привет.
Есть, скажем, Docker контейнер, развернутый из образа с Nginx.
Я хочу узнать, есть ли обновления этого.. образа? (совершенно запутался в формулировах)
Допустим, что обновилась версия Nginx, и можно развернуть новую версию в контейнере.
Как узнать - средствами Docker - о возможности такого обновления?
зависит от того, из какого образа был развернут контейнер. если на основу был взят к примеру
docker/nginx:latest , (и мы говорим про docker compose!) то можно сделать
docker compose pull
docker compose up -d
и оно скачает актуальный образ и стартанет. контейнер будет пересоздан, данные в вольюмах не пострадают.
если там было чтото типа
docker/nginx:1.24.0 , и нам надо docker/nginx:1.25.3 , придется ручками. Если опять же мы про docker compose - то лезем в docker-compose.yml , меняем версию на нужную и вперед.
Если речь про обычный докер, где все делалось руками - аккуратно ручками стопаем старый, docker pull новый, заново команду запуска и скорее всего взлетит. Вопросики будут про тома в данными (volumes) и порты, поэтому команду запуска надо точно воспроизводить.
Добавлю. Использовать :latest это вообще плохая практика, версии всегда стоит контролировать. А то неглядя апдейт выкатишь, и как оно нафиг там развалится, потому что разрабы чтото ключевое поменяли и может даже где-то про это анонс есть, но мы же не читаем..
Dmitry, моя задача -- именно узнать, но не ставить сразу. Я совсем нуб в Docker.
То есть
docker compose pull
скачает последнюю версию.
А затем можно как-то по ID проверить, отличается ли последняя версия от установленной, и отличие будет означать возможность обновления.
Так?
Salamandrine, ну ок. у вас есть docker image ls , docker inspect id_of_running_cont
, вы всегда можете увидеть, какая версия запущена с помощью inspect и какая версия доступна локально с помощью image ls .
Доступна ли новая версия для скачивания - тут сложнее, если качаете с docker hub можно глазами глянуть что там у любимого разработчика новенького. Можно накостылить какие нибудь скрипты которые будут делать обращение в docker registry на предмет новых образов.
Кстати есть (была, больше не разрабатывается похожу) еще прикольная штука https://github.com/containrrr/watchtower , оно умело следить за новыми имиджами выбранных контейнеров и скачивала и перезапускала их. Но еще раз - автоматизация тут вещь опасная. Я за подход озвученный в ответах ниже - работает, не трожь. Обновляемся только если есть CVE и критические проблемы.
Отличный вопрос!
В реальной жизни это не только вопрос версии Nginx, но и модули, и "мой" код.
Для богатых есть Wiz и другие.
Для простых людей - Docker Scout, Trivy.