以docker容器内的应用程序作为具有function的非root用户运行

我试图运行一个简单的python UDP echo-server在一个使用非root用户的docker容器内的Port 507上侦听。 Dockerfile看起来像这样:

FROM docker.io/centos RUN yum -y install iputils iproute COPY echo-server.py /tmp/ USER 1000 CMD ["python", "/tmp/echo-server.py"] 

由于507是一个众所周知的端口,所以在发出docker运行时我还添加了能力NET_BIND_SERVICE,但是我仍然得到一个错误:

 # docker run --cap-add=NET_BIND_SERVICE 4d1c2301b166 Traceback (most recent call last): File "/tmp/echo-server.py", line 12, in <module> s.bind(('', port)) File "/usr/lib64/python2.7/socket.py", line 224, in meth return getattr(self._sock,name)(*args) socket.error: [Errno 13] Permission denied 

在检查function时,可以看到使用非root用户时未设置有效function。

 [root@srv-tcn-01 ha-service]# docker run --cap-add=NET_BIND_SERVICE 4d1c2301b166 grep Cap /proc/self/status CapInh: 00000000a80425fb CapPrm: 0000000000000000 CapEff: 0000000000000000 CapBnd: 00000000a80425fb 

有谁知道如何在一个非root用户和某些function的Docker容器中运行程序吗?