如何以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
选项来更改用户来运行命令。