如何允许 Docker 容器以另一个用户身份绑定特权端口?

如何允许 Docker 容器以另一个用户身份绑定特权端口?

我有一个docker-compose.yaml文件,我使用以下命令覆盖用于运行容器进程的用户用户指示:

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

在容器中,需要在端口上打开一个 Web 服务器80,但是,此操作失败并出现以下错误:

httpd: bind: Permission denied

据我了解,此操作会失败,因为80是一个特权端口,除 之外的用户无法打开root。 有什么方法可以让 Docker 容器中的用户打开端口80

答案1

您可以更改的值,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

这将允许非特权进程绑定到所有低编号端口。

相关内容