![](/img/trans.png)
[英]Docker how to start container with defined nameservers in /etc/resolv.conf
[英]how to modify /etc/resolv.conf as non root user in docker file or as script
基於最佳實踐和建議,出於安全原因,我們應始終以非root用戶身份運行docker容器。 這樣做時,我面臨一個問題,我必須用域名覆蓋/etc/resolv.conf文件。 我通過腳本(例如env.sh)在resolv.conf文件中添加域名(我稱該腳本為例如Dockefile具有以下命令
from dabian:latest
...
...
ENTRYPOINT[env.sh]
腳本env.sh
只是根據環境附加域名,例如dev / qa / prod等。
如果我以root用戶身份運行docker容器,則沒有問題,因為resolv.conf將使用適當的域名映射(基於環境配置文件)進行更新,但是如果我添加非root用戶(在ENTRYPOINT[evn.sh]
file中)並使用該用戶並調用ENTRYPOINT[evn.sh]
, resolv.conf文件將不會更新。
是因為docker內部的hosts或resolv.conf之類的文件總是被主機配置覆蓋,並且只允許root用戶修改這些文件(看起來像這樣)。
我的問題是,是否可以與非root用戶做同樣的事情,或者有沒有辦法授予非root用戶足夠的權限來修改resolv.conf並以非root用戶身份運行(可能是為了限制或限制用戶權限以僅修改resolv.conf)嗎? 有沒有人遇到這種情況?
您有兩種選擇:
以root
用戶身份運行container
,並使用ENTRYPOINT
另一個用戶使用以下命令運行application
:
runuser -l YOUR_USER -c "COMMAND_TO_RUN"
或設置無密碼的sudo
並將用戶分配給它,在Dockerfile
類似這樣:
RUN adduser YOUR_USER sudo
RUN sed -i.bkp -e \
's/%sudo\s\+ALL=(ALL\(:ALL\)\?)\s\+ALL/%sudo ALL=NOPASSWD:ALL/g' \
/etc/sudoers
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.