Доверие контента зеркала докер
TL;DR - как мне запустить (потенциально небезопасное) зеркало реестра Docker и доверять его содержимому?
У меня есть серия устройств, работающих с докерными контейнерами в закрытой сети без доступа к Интернету. Я могу временно подключить ноутбук, который ранее имел доступ к сети Интернет. Конечная цель - обновить образы контейнеров, на которых работает каждое из этих устройств.
Я могу заставить это работать в принципе:
- Вытягивание из интернет-реестра (Docker-концентратор или частный) на ноутбук.
- Запуск реестра на ноутбуке.
Нажав на этот реестр с
docker tag myorgname/trusttest:latest laptophostname:80/myorgname/trusttest:latest docker push laptophostname:80/myorgname/trusttest:latest
- Отключение ноутбука от интернета и подключение к закрытой сети.
Говоря устройствам сделать
docker pull laptophostname:80/myorgname/trusttest:latest docker tag laptophostname:80/myorgname/trusttest:latest myorgname/trusttest:latest
и перезапустить их контейнеры с новым образом (как я это делаю, это не особенно актуально, скажем так, я могу общаться laptophostname
им, а они делают все остальное).
Что действительно важно, так это то, что я работаю с Docker Content Trust (он же нотариус). В противном случае любой может просто подключиться к сети и сказать устройствам, чтобы они запускали произвольный код.
Я также могу запустить нотариальный сервер на ноутбуке, и это работает нормально, за исключением того, что когда я помещаю более новый образ из локального докера в реестр на ноутбуке (шаг 3 выше), он запрашивает у меня новые ключи подписи, т.е. Контейнер новой информации о доверии, а не просто копирование исходного созданного доверия.
На данный момент у меня есть контроль над машиной, которая использовалась для обновления (например, ноутбук), но в будущем это может быть не так, поэтому я не хочу иметь никаких ключей разработчика по этому вопросу. Нотариус объявляет, что небезопасные зеркала являются вариантом использования, так как мне заставить его работать с докером?
РЕДАКТИРОВАТЬ
Это может или не может иметь значение, но идея заключается в том, что клиент покупает одно или несколько из этих устройств одновременно и поэтапно добавляет их в сеть. Мне нужен способ предоставления подписанных обновлений программного обеспечения, отсюда и первоначальный план написания приложения в качестве зеркала реестра. Без доверия к контенту было бы легко обмануть устройства для запуска любых образов.
1 ответ
Я предлагаю вам взглянуть на роя Docker, так как многие из упомянутых вами вещей обрабатываются роем Docker. https://docs.docker.com/engine/swarm/
В частности, вы можете установить свой ноутбук в качестве узла менеджера роя, который является единственным узлом, у которого есть разрешения на обновление контейнеров на рабочих узлах.