我们说我有this Dockerfile。
在端口80上以非特权用户身份运行它的最佳方法是什么? (没有在前面添加网络服务器)?
我试图设置这个:How do I run Node.js on port 80? 但我并不幸运,我想我不太了解这是如何工作的。
您认为有一个优雅的解决方案来解决这个问题吗?我很怀疑,但很有希望:)
答案 0 :(得分:3)
根据此站点https://wiki.apache.org/httpd/NonRootPortBinding“setcap”设置在内核级别使用端口80的权限。容器在主机内核内的命名空间内运行。因此,您的教程仅适用于虚拟机和专用服务器。在主机内核中的特权级别上运行docker容器可能会更成功:
$ docker run --privileged=true ...
否则您将不得不使用特权端口(< 1024)。 “Docker Way”通常是避免使用特权容器,而只依赖端口映射。
根据此Ticket:https://github.com/docker/docker/issues/5650 setcap通常应与docker容器一起使用,但如果使用AUFS文件系统驱动程序,则会失败。这张票是从2014年开始的,所以这可能适用于最新的AUFS实施。