作者:烟花宇凉 | 来源:互联网 | 2023-01-08 01:42
这是我的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
我必须切换到USER jenkins,我必须以jenkins的身份运行容器.
我的问题是现在如何在容器启动时以root用户身份运行startup.sh?
1> albttx..:
删除USER jenkins
Dockefile中的行.
在入口点脚本(/root/startup.sh
)的末尾更改用户.
添加:su - jenkins
man su
例:
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
选项来更改用户来运行命令.
这能够完成任务,唯一的事情是,运行搬运工Exec时-IT <容器ID> /斌/ bash中,我们会以root用户,这是一种恼人的,我猜.有解决方案吗