容器安全常見問題 (FAQs)

在 Docker Desktop 中,容器如何與宿主機隔離?

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

重要的考量因素包括:

  • 容器可以存取透過 Docker Desktop 設定進行檔案共享的宿主機檔案。
  • 預設情況下,容器在 Docker Desktop 虛擬機內以 root 身份執行,但權限受到限制。
  • 特權容器 (--privileged, --pid=host, --cap-add) 在虛擬機內以提升後的權限執行,這使其能夠存取虛擬機內部和 Docker Engine。

開啟「增強容器隔離」(Enhanced Container Isolation) 後,每個容器都會在 Docker Desktop 虛擬機內的一個專用 Linux 使用者命名空間 (user namespace) 中執行。即使是特權容器,也僅在其容器邊界內擁有權限,而不是在整個虛擬機內。ECI 使用先進技術來防止容器突破 Docker Desktop 虛擬機和 Docker Engine。

容器可以存取宿主機檔案系統的哪些部分?

容器僅能存取符合以下條件的宿主機檔案:

  1. 透過 Docker Desktop 設定進行共享。
  2. 明確地以綁定掛載 (bind-mounted) 方式掛載到容器內(例如:docker run -v /path/to/host/file:/mnt)。

以 root 身份執行的容器可以存取宿主機上由管理員擁有的檔案嗎?

不能。宿主機檔案共享使用使用者空間檔案伺服器(以 Docker Desktop 使用者身份在 com.docker.backend 中執行),因此容器只能存取 Docker Desktop 使用者本身已經擁有存取權限的檔案。

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.