Часто задаваемые вопросы и известные проблемы

Часто задаваемые вопросы

Нужно ли мне менять способ использования Docker, когда включена Enhanced Container Isolation?

Нет, вы можете продолжать использовать Docker как обычно. Усовершенствованная изоляция контейнеров будет в основном прозрачна для вас.

Все ли рабочие нагрузки контейнеров хорошо работают с Enhanced Container Isolation?

Большинство рабочих нагрузок контейнеров подходят, некоторые — нет (пока). Для нескольких рабочих нагрузок, которые ещё не работают с Enhanced Container Isolation, Docker продолжит улучшать эту функцию, чтобы свести её к минимуму.

Можно ли запускать привилегированные контейнеры с помощью Enhanced Container Isolation?

Да, вы можете использовать флаг --privileged в контейнерах, но в отличие от привилегированных контейнеров без Enhanced Container Isolation, контейнер может использовать свои повышенные привилегии только для доступа к ресурсам, назначенным контейнеру. Он не может получает доступ к глобальным ресурсам ядра на виртуальной машине Docker Desktop Linux. Это позволяет безопасно запускать привилегированные контейнеры. Для получения дополнительной информации см. Ключевые особенности и преимущества.

Будут ли все рабочие нагрузки привилегированного контейнера работать с Enhanced Container Isolation?

Нет. Рабочие нагрузки привилегированного контейнера или рабочие нагрузки без пространства имён, которые хотят получает доступ к глобальным ресурсам ядра внутри виртуальной машины Docker Desktop Linux, не будут работать. Например, вы не можете использовать привилегированный контейнер для загрузки модуля ядра.

Почему бы просто не ограничить использование флага --privileged?

Привилегированные контейнеры обычно используются для выполнения расширенных рабочих нагрузок в контейнерах, например Docker-in-Docker или Kubernetes-in-Docker, для выполнения операций ядра, таких как загрузка модулей, или для доступа к аппаратным устройствам.

Усовершенствованная изоляция контейнеров позволяет выполнять расширенные рабочие нагрузки, но запрещает выполнение операций ядра или доступ к аппаратным устройствам.

Ограничивает ли Enhanced Container Isolation монтирование привязок внутри контейнера?

Да, он ограничивает подключение каталогов, расположенных на виртуальной машине Docker Desktop Linux, к контейнеру.

Он не ограничивает привязку файлов вашего хост-компьютера к контейнеру, как настроено через Настройки > Ресурсы > Общий доступ к файлам в Docker Desktop.

Защищает ли Enhanced Container Isolation все контейнеры, запущенные с помощью Docker Desktop?

Он защищает все контейнеры, запущенные пользователями через docker create и docker run. Он ещё не защищает модули Docker Desktop Kubernetes, контейнеры расширений и среды разработки.

Влияет ли Enhanced Container Isolation на производительность контейнеров?

Расширенная изоляция контейнеров очень мало влияет на производительность контейнеров. Исключение составляют контейнеры, которые выполняют множество системных вызовов mount и umount, поскольку они перехватываются и проверяются средой выполнения контейнера Sysbox.

С Enhanced Container Isolation может ли пользователь по-прежнему переопределять флаг --runtime из CLI?

Нет. При включенной расширенной изоляции контейнеров Sysbox блокируется как среда выполнения по умолчанию (и единственная) для контейнеров, развернутых пользователями Docker Desktop. Если пользователь пытается переопределить среду выполнения (например, docker run --runtime=runc), данный запрос игнорируется, и контейнер создаётся через среду выполнения Sysbox.

Причина, по которой runc запрещена в Enhanced Container Isolation, заключается в том, что она позволяет пользователям работать как «настоящий пользователь root» на виртуальной машине Docker Desktop Linux, тем самым предоставляя им неявный контроль над виртуальной машиной и возможность изменять административные конфигурации для Docker Desktop, например. .

Чем ECI отличается от режима userns-remap в Docker Engine?

См. Как это работает.

Чем ECI отличается от Rootless Docker?

См. Как это работает

Ограничения и известные проблемы

Несовместимость с подсистемой Windows для Linux (WSL)

Расширенная изоляция контейнеров (ECI) в настоящее время не работает, когда Docker Desktop работает в Windows с WSL/WSL2. Это связано с некоторыми ограничениями ядра Linux WSL/WSL2. В результате, чтобы использовать Enhanced Container Isolation в Windows, вы должны настроить Docker Desktop для использования Hyper-V. Это может быть реализовано с помощью элементов управления администратора. Для получения дополнительной информации см. Управление настройками.

Сборка Docker и buildx имеют некоторые ограничения.

При включенном ECI права на сборку Docker --network=host и Docker buildx (network.host, security.insecure) не допускаются. Сборки, требующие этого, не будут работать должным образом.

Поды Kubernetes ещё не защищены

Поды Kubernetes ещё не защищены ECI. Вредоносный или привилегированный модуль может поставить под угрозу виртуальную машину Docker Desktop Linux и обойти элементы управления безопасностью. Мы ожидаем улучшения в будущих версиях Docker Desktop.

Контейнеры расширений ещё не защищены

Контейнеры расширения также ещё не защищены ECI. Убедиться, что ваши контейнеры расширений исходят от доверенных лиц, чтобы избежать проблем. Мы ожидаем улучшения в будущих версиях Docker Desktop.

Среды разработки Docker Desktop ещё не защищены

Контейнеры, запущенные функцией Docker Desktop Dev Environments, также ещё не защищены. Мы ожидаем улучшения в будущих версиях Docker Desktop.

Использование в производстве

В целом пользователи не должны испытывать различий между запуском контейнера в Docker Desktop с включенным ECI, который использует среду выполнения Sysbox, и запуском того же контейнера в рабочей среде через стандартную среду выполнения OCI runc.

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