
Предположим, у меня есть хост-машина Ubuntu, на которой запущен Docker.
Этот хост содержит множество запущенных контейнеров, которые используют множество различных базовых образов ( FROM
), таких как ubuntu, alpine, java:8...
Этот хостинг также содержит несколько изображений, созданных вручную.
Сегодня я могу остановить и удалить все мои контейнеры, а затем создать их все снова. Ни один из образов не хранит данные (я не фиксирую контейнеры). Поэтому потеря моих данных не является проблемой. Восстановление моих сервисов также не должно быть проблемой, пока образы остаются прежними.
Предположим, что обнаружена уязвимость, влияющая на ядро Linux.
Я обновил свою хостовую ОС, так что хост больше не уязвим. Docker-контейнеры используют ядро хоста для запуска, но достаточно ли этого? Какие соображения и действия мне следует предпринять, чтобы убедиться, что мои контейнеры не затронуты уязвимостью?
решение1
Так как контейнеры docker используют ядро хоста. После обновления ядра хоста у вас не будет проблем с контейнерами.
Проблемы с библиотеками — это уже другая история. Например, Openssl — это библиотека, которая может отличаться в контейнерах и хосте и должна быть обновлена.
Хорошей практикой является включение apt-get update && apt-get -q -y upgrade
в начало вашего Dockerfile. Поэтому вам следует регулярно создавать свои образы.
Если вы используете официальные образы, хорошей практикой будет регулярно делать pull для обновления ваших контейнеров. Если вы используете docker-compose:
docker-compose pull && docker-compose up -d
Он обновит их. Для простого докера вам нужно сделать pull. Удалите контейнер и создайте новый, указывающий на те же тома:
docker pull image
docker stop containerid && docker rm containerid
docker run image ....
С уважением