簡體   English   中英

如何在docker文件或腳本中以非root用戶身份修改/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM