在非特权 docker 容器中使用 sudo 不起作用
Using sudo inside non-priviledged docker container not working
我不想成为 docker 容器中的 root。
但是我必须在脚本中修改一些属于root的文件。
我想为此使用 sudo。
这是我的 docker 文件:
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 Whosebug
uid=1000(coursera) gid=1000(coursera) groups=1000(coursera)
hostname: you must be root to change the host name
有什么想法吗?
感谢大家的支持,这个终于对我有用了:
export temphostname=`hostname`
sudo su -c "echo 127.0.0.1 $temphostname >> /etc/hosts"
我不想成为 docker 容器中的 root。
但是我必须在脚本中修改一些属于root的文件。
我想为此使用 sudo。
这是我的 docker 文件:
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 Whosebug
uid=1000(coursera) gid=1000(coursera) groups=1000(coursera)
hostname: you must be root to change the host name
有什么想法吗?
感谢大家的支持,这个终于对我有用了:
export temphostname=`hostname`
sudo su -c "echo 127.0.0.1 $temphostname >> /etc/hosts"