快轉到主要內容
  1. 文章列表/

Docker Compose PUID Best Practice

·
Site部大開發 docker compose
目錄

Docker Compose Best practice:PUID 和 PGID 的安全配置
#

記錄一下學習 Docker Compose 時 PUIDPGID 的 best practice,構建更安全可靠的容器化環境。

為什麼要關注 PUID 和 PGID?
#

  • 權限控制: PUID (用戶ID) 和 PGID (組ID) 決定了容器在主機文件系統上創建文件的所屬用戶和組。默認情況下,容器以 root 用戶身份運行 (UID 0),這可能帶來安全隱患。
  • 避免權限問題: 如果多個用戶共享主機系統,大家共用 PUID 的話, 可能會導致權限衝突。
  • 提升安全性: 配置適當的 PUIDPGID 可以限制容器的權限,即使容器被入侵,也能降低攻擊者對主機系統的影響。

Best practice
#

  1. 創建專用 Docker 用戶 (強烈推薦)

    • 在主機系統上創建一個專門用於運行 Docker 容器的用戶和組:

      sudo useradd -m -d /home/dockeruser -s /bin/bash dockeruser
      sudo groupadd dockergroup
      sudo usermod -aG dockergroup dockeruser
      
      • dockeruserdockergroup 替換為自行定義的名稱。
    • docker-compose.yml 文件中,將 PUIDPGID 環境變量設置為新用戶的 UID 和 GID:

      version: '3'
      services:
        your-service:
          # ... 其他配置
          environment:
            - PUID=1001 # 新用戶的 UID
            - PGID=1001 # 新用戶的 GID
      
  2. 在容器內使用非 root 用戶

    • 盡可能確保 Docker 容器以非 root 用戶運行主要進程。 這可以減輕容器被入侵時的影響。

    • docker-compose.yml 中,使用 user 指令指定容器內的用戶:

      version: '3'
      services:
        your-service:
          # ... 其他配置
          user: "1001:1001"  # 以新用戶身份運行
      

查找新用戶的 PUID 和 PGID
#

使用 id 命令:

```bash
id dockeruser  # 替換為您創建的用戶名
```

輸出示例:

```
uid=1001(dockeruser) gid=1001(dockergroup) groups=1001(dockergroup) 
```

*  `uid=1001`  是  `PUID`。
 *  `gid=1001`  是  `PGID`.

總結
#

通過遵循以上的設置,可以創建一個更安全、更有條理的 Docker 容器運行環境。

相關文章

Oracle Pay as you Go
Site部大開發 VPS
媽媽我的覺越來越少
十日痰 世間皆苦 細說呻語
不是所有的米妮都住在歡笑樂園
十日痰 年輕人 細說呻語