0
我不想在碼頭集裝箱內成爲root用戶。在非特權碼頭集裝箱內使用sudo不起作用
但我必須修改一些腳本中屬於根的文件。
我想爲此使用sudo。
這是我的搬運工文件:
FROM ubuntu:16.04
RUN apt-get update
RUN apt-get install -y curl wget python openssh-server sudo
RUN mkdir /grader
RUN mkdir /grader/week1
RUN mkdir /grader/week1/assignment2
ADD executeGrader.sh /grader/
RUN groupadd -g 1000 coursera
RUN useradd -g 1000 -u 1000 --shell /bin/bash coursera
RUN usermod -a -G sudo coursera
RUN mkdir /home/coursera
RUN chown coursera:coursera /home/coursera
RUN echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config
RUN echo "coursera ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
RUN chmod 777 /etc/hostname
USER coursera
EXPOSE 8080
EXPOSE 8081
ENTRYPOINT ["/grader/executeGrader.sh"]
executeGrader.sh包含這一項:
#!/bin/bash
id
sudo -u root -H bash -c "hostname localhost"
,但我得到這個:/
>>docker run -h sdfsdfsdf323 -u 1000:1000 -P stackoverflow
uid=1000(coursera) gid=1000(coursera) groups=1000(coursera)
hostname: you must be root to change the host name
任何想法?
默認情況下你會搬運工容器內的根。那麼爲什麼你需要以普通用戶身份運行應用程序? 爲什麼你需要切換到root?您可以在腳本中使用'sudo -H bash -c「hostname localhost」' –
我正在爲coursera在線學習平臺創建一個分級器,並且他們只會以非特權用戶的身份啓動它。你的解決方案(sudo -H bash -c「hostname localhost」)給了我同樣的錯誤。 –
...在我的本地碼頭安裝使用Ubuntu 16.04,而不是coursera ....順便說一句。 –