Использование опций RedHat не будет работать на восходящем движке Docker CE или EE, RedHat разветвил механизм докера и добавил свои собственные функции, которые несовместимы. Вы также обнаружите, что / etc / sysconfig / docker - это файл конфигурации только для RedHat, предназначенный для работы с их версией сценариев запуска.
Жесткое ограничение для серверов реестра в настоящее время не поддерживается в официальном движке Docker из коробки. Вы можете реализовать это с помощью правил брандмауэра для исходящих соединений, но это может привести к сбоям, если только вы не разрешите исходящие соединения только в известном белом списке. Даже если вам удастся реализовать это на сетевом уровне, это не помешает кому-либо импортировать изображение из файла tar или даже создать изображение, идентичное изображению на других серверах реестра.
Вместо этого подход от Docker состоял в том, чтобы использовать нотариус / Доверие контента для криптографической подписи тега / манифеста изображения, чтобы убедиться, что он исходит из известного источника. Это обрабатывает изображения независимо от того, как они извлекаются, загружаются или собираются на хосте докера. В Docker CE это реализуется с помощью параметров на стороне клиента, и поэтому его можно легко отключить (хотя клиент в Docker CE с прямым доступом к вашему док-сокету может сделать гораздо больше, чем просто запускать общедоступные образы, они фактически являются пользователем root на вашем компьютере. хостов). Существуют инструменты для подключения к интерфейсу authz механизма докера, включая Twistlock и Open Policy Agent, но я не знаю, позволяют ли они применять Доверие к контенту.
В Docker EE этот параметр легко включить на стороне сервера. В UCP есть переключатель для принудительного применения только запущенных образов с доверенной подписью. Самым большим недостатком этого является то, что каждая установка докера, которую я сделал, требовала использования образов из внешнего источника, такого как Docker Hub. И чтобы использовать эти образы, теперь вам нужно извлечь их из-за пределов этой среды и отправить их в свой реестр, подписав их своими учетными данными. Это становится головной болью для поддержания.
В дополнение к тому, что я болел за поддержку, я вижу очень мало блокирующих Docker EE с этой опцией по другой причине: это идет вразрез со всеми целями DevOps, позволяющими разработчикам управлять своим набором инструментов без необходимости одобрения со стороны ops. Если они хотят переключиться с Java 8 на Java 9, разработчики должны легко реализовать их, и задача ops должна заключаться в том, есть ли в этом результирующем образе уязвимости, а не базовый образ, использованный для его создания.