Запустите приложение в Docker-контейнере как пользователь без полномочий root с возможностями

Я попытался запустить простой эхо-сервер Python UDP, прослушивающий порт 507, внутри контейнера докера, который использует пользователя без полномочий root. 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 является хорошо известным портом, я также добавил возможность NET_BIND_SERVICE при выдаче запуска Docker, но я все еще получаю ошибку:

# 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

При проверке возможностей я мог видеть, что эффективные возможности не устанавливаются при использовании пользователя без полномочий root.

[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

Кто-нибудь знает, как запустить программу в контейнере Docker с пользователем без полномочий root и определенными возможностями?

0 ответов

Другие вопросы по тегам