容器安全常見問題

Docker Desktop 中容器是如何與主機隔離的?

Docker Desktop 在定製的 Linux 虛擬機器中執行所有容器(原生 Windows 容器除外)。這在容器和主機之間增加了強大的隔離,即使容器以 root 身份執行也是如此。

重要注意事項包括:

  • 容器可以透過 Docker Desktop 設定訪問配置為檔案共享的主機檔案
  • 預設情況下,容器以具有有限功能的 root 身份在 Docker Desktop VM 中執行
  • 特權容器(`--privileged`、`--pid=host`、`--cap-add`)在 VM 中以提升的許可權執行,使它們能夠訪問 VM 內部和 Docker Engine

啟用增強容器隔離後,每個容器都在 Docker Desktop VM 內的專用 Linux 使用者名稱空間中執行。即使是特權容器也只在其容器邊界內擁有許可權,而不是在 VM 中。ECI 使用高階技術來防止容器突破 Docker Desktop VM 和 Docker Engine。

容器可以訪問主機檔案系統的哪些部分?

容器只能訪問以下主機檔案:

  1. 使用 Docker Desktop 設定共享
  2. 顯式繫結掛載到容器中(例如,`docker run -v /path/to/host/file:/mnt`)

以 root 身份執行的容器可以訪問主機上管理員擁有的檔案嗎?

不可以。主機檔案共享使用使用者空間檔案伺服器(在 `com.docker.backend` 中以 Docker Desktop 使用者身份執行),因此容器只能訪問 Docker Desktop 使用者已擁有訪問許可權的檔案。