Доверие контента зеркала докер

TL;DR - как мне запустить (потенциально небезопасное) зеркало реестра Docker и доверять его содержимому?

У меня есть серия устройств, работающих с докерными контейнерами в закрытой сети без доступа к Интернету. Я могу временно подключить ноутбук, который ранее имел доступ к сети Интернет. Конечная цель - обновить образы контейнеров, на которых работает каждое из этих устройств.

Я могу заставить это работать в принципе:

  1. Вытягивание из интернет-реестра (Docker-концентратор или частный) на ноутбук.
  2. Запуск реестра на ноутбуке.
  3. Нажав на этот реестр с

    docker tag myorgname/trusttest:latest 
    laptophostname:80/myorgname/trusttest:latest
    docker push laptophostname:80/myorgname/trusttest:latest
    
  4. Отключение ноутбука от интернета и подключение к закрытой сети.
  5. Говоря устройствам сделать

    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/

В частности, вы можете установить свой ноутбук в качестве узла менеджера роя, который является единственным узлом, у которого есть разрешения на обновление контейнеров на рабочих узлах.

Другие вопросы по тегам