你可以在Docker容器内以root身份启动一个进程,同时让执行调用的默认用户为非root?

7 人关注

我基本上是在试图运行 crond -f 作为root,而默认用户则是不同的。

由于它运行的crontabs使用了镜像上其他文件的敏感信息,我想给这些文件以root权限,启动crond进程,然后将用户切换到一个新创建的用户。 这样,cronjob就能获得它们所需要的信息,同时又能保证容器中的敏感文件不被任何可能获得执行权限的人访问。

已经试过几次这样的事情。

USER root
CMD ["./runCrons.sh"]
USER newuser

但这并不是以root身份运行crond进程,而是以newuser身份。

如果谁有解决办法,就可以省去我的一些挖掘和实验。

2 个评论
试试sudo ./runCrons.sh和这个讨论中的sudoers东西。 stackoverflow.com/questions/25845538/...
jww
Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎是偏离主题的,因为它不是关于编程或开发。见 我可以在这里询问哪些话题 在帮助中心。也许 Super User or Unix & Linux Stack Exchange 问这个问题的更好地方。
linux
docker
kubernetes
alpine-linux
boreddude
boreddude
发布于 2017-12-19
1 个回答
Aby Sheffer
Aby Sheffer
发布于 2017-12-19
已采纳
0 人赞同

在构建Docker镜像时,创建一个属于sudo组的用户,允许他在没有密码的情况下运行所有sudo命令。

考虑到下面的例子,它创建了一个名为test的docker镜像,用户名为myuser,有sudo pass。

$ cat Dockerfile
FROM debian:latest
ENV user_name myuser
RUN apt-get update
RUN apt-get install -y sudo
RUN useradd --create-home -s /bin/bash ${user_name}
RUN echo "${user_name} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/${user_name}
WORKDIR /home/${user_name}
USER ${user_name}
CMD /bin/bash

然后建立图像。

docker build -t test .