我的问题如下:我需要启动一个运行dnsmasq服务的容器(但这可能是任何服务)。难点在于我在我的图像中创建了一个用户,所以当我用它创建一个容器时,它从我的自定义用户(没有root)开始。
因此,如何使用非root用户启动需要root权限的服务(sudo service dnsmasq start)?
可能的解决方案:
还有其他解决方案吗?
答案 0 :(得分:0)
感谢Rickkwa的评论,我能够解决问题:
在Dockerfile中(以root身份):
# Install and configure Dnsmasq
RUN apt-get update && apt-get install -y dnsmasq
# Need to add a new line
RUN echo '' >> /etc/dnsmasq.conf
# See https://github.com/nicolasff/docker-cassandra/issues/8
RUN echo 'user=root' >> /etc/dnsmasq.conf
# Add the needed route
RUN echo 'address=/my-domain.com/<my_ip>' >> /etc/dnsmasq.conf
# Allow my user's group to start the service
RUN echo ''%${group}' ALL=NOPASSWD:/usr/sbin/service dnsmasq *' >> /etc/sudoers
# Switch to the right user, that belongs to the group ${group}
USER ${user}
然后,当您的容器启动时(例如,在入口点),添加以下行:
sudo service dnsmasq start
还记得NOPASSWD
文件中的/etc/sudoers
吗?这可以防止系统在启动服务时询问用户的密码。
答案 1 :(得分:-1)
如何使用入口点运行shell脚本来执行您想要的操作