Docker

如何允許 Docker 容器將特權埠綁定為另一個使用者?

  • August 21, 2022

我有一個docker-compose.yaml文件,我在其中覆蓋了用於使用user指令執行容器程序的使用者:

version: "3.3"
services:
   front:
       image: "ghcr.io/hexil-org/hexer-front:latest"
       restart: "unless-stopped"
       user: "1002:1002"

在容器中,需要在 port 上打開一個網路伺服器80,但是,這會失敗並出現以下錯誤:

httpd: bind: Permission denied

據我了解,這失敗了,因為80它是一個特權埠,除了root. 有沒有辦法讓 Docker 容器中的使用者打開埠80

您可以更改的值,net.ipv4.ip_unprivileged_port_start sysctl以便容器使用者能夠綁定埠 80。您可以docker-compose.yml像這樣修改您的文件:

version: "3.3"
services:
 front:
   image: "ghcr.io/hexil-org/hexer-front:latest"
   restart: "unless-stopped"
   user: "1002:1002"
   sysctl:
     net.ipv4.ip_unprivileged_port_start: 0

這將允許非特權程序綁定到所有低編號埠。

引用自:https://serverfault.com/questions/1108735