如何以root用户身份运行ENTRYPOINT?

这是我的dockerfile的一部分:

COPY ./startup.sh /root/startup.sh RUN chmod +x /root/startup.sh ENTRYPOINT ["/root/startup.sh"] EXPOSE 3306 CMD ["/usr/bin/mysqld_safe"] USER jenkins 

我必须切换到用户jenkins结束,我必须运行容器作为jenkins。

我的问题是现在我怎样才能以root用户运行startup.sh当容器启动?

删除USER jenkins中的USER jenkins行。

在入口点脚本末尾更改用户( /root/startup.sh )。

join: su - jenkins

例:

Dockerfile

 FROM debian:8 RUN useradd -ms /bin/bash exemple COPY entrypoint.sh /root/entrypoint.sh ENTRYPOINT "/root/entrypoint.sh" 

entrypoint.sh

 #!/bin/bash echo "I am root" && id su - exemple # needed to run parameters CMD $@ 

现在你可以跑了

 $ docker build -t so-test . $ docker run --rm -it so-test bash I am root uid=0(root) gid=0(root) groups=0(root) exemple@37b01e316a95:~$ id uid=1000(exemple) gid=1000(exemple) groups=1000(exemple) 

这只是一个简单的例子,您也可以使用su -c选项来更改用户来运行命令。