Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 在docker容器中使用setuid_Macos_Docker_Initialization_Root_Setuid - Fatal编程技术网

Macos 在docker容器中使用setuid

Macos 在docker容器中使用setuid,macos,docker,initialization,root,setuid,Macos,Docker,Initialization,Root,Setuid,我有一个容器,它需要在启动时进行一些初始化,只能作为root用户进行初始化,但是按照良好的实践,我不希望容器作为root用户运行 我想我应该能够在容器内创建一个脚本,由root所有,并设置setuid位。然后可以使用非root用户启动容器,通过执行脚本完成初始化,容器执行它需要做的事情 这似乎不起作用。即使脚本由root用户和setuid位集拥有,初始化脚本仍以非root用户身份运行 这样行吗?还有别的(更好的)办法吗 我正在mac上运行Docker for Desktop 我需要进行的初始化是

我有一个容器,它需要在启动时进行一些初始化,只能作为root用户进行初始化,但是按照良好的实践,我不希望容器作为root用户运行

我想我应该能够在容器内创建一个脚本,由root所有,并设置setuid位。然后可以使用非root用户启动容器,通过执行脚本完成初始化,容器执行它需要做的事情

这似乎不起作用。即使脚本由root用户和setuid位集拥有,初始化脚本仍以非root用户身份运行

这样行吗?还有别的(更好的)办法吗

我正在mac上运行Docker for Desktop

我需要进行的初始化是使用一个只能在运行时从容器内部确定的值来更新/etc/hosts,特别是与host.docker.internal关联的IP地址


我已尝试使/etc/hosts可由Dockerfile中的非root用户写入。那也不行/etc/hosts在docker文件中时是一个已装入的卷,chmod和chown似乎对正在运行的容器中的文件没有影响。

可能要实现您的目标,您可以在docker文件中指定在安装脚本后使用非root用户

例如:

FROM ...
RUN ./install.sh
USER foo
...
此Dockerfile将在将用户更改为所选用户后以root用户身份启动安装程序


希望它能对你有用

谢谢你,戴维德,但很遗憾,如果我没听错的话。初始化脚本必须在容器运行时运行,而不是在生成映像时运行。