我有一个容器需要在启动时执行某些只能由root完成的初始化操作,但遵循良好的实践原则,我不希望容器以root身份运行。
我想应该可以在容器内创建一个脚本,由root拥有并设置setuid位。然后使用非root用户启动容器,在执行脚本时进行初始化,容器执行所需的操作。
但这似乎行不通。即使脚本由root拥有并设置了setuid位,初始化脚本仍以非root用户身份运行。
这样做应该可以吗?还有其他更好的方法吗?
我在Mac上使用Docker Desktop。
我需要进行的初始化操作是使用仅在容器内部可确定的值更新/etc/hosts,具体而言是与host.docker.internal相关联的IP地址。
我尝试让Dockerfile内的非root用户将/etc/hosts设为可写,但这也不起作用。当容器运行时,/etc/hosts是一个挂载的卷,chmod和chown似乎对正在运行的容器中的文件没有影响。
我想应该可以在容器内创建一个脚本,由root拥有并设置setuid位。然后使用非root用户启动容器,在执行脚本时进行初始化,容器执行所需的操作。
但这似乎行不通。即使脚本由root拥有并设置了setuid位,初始化脚本仍以非root用户身份运行。
这样做应该可以吗?还有其他更好的方法吗?
我在Mac上使用Docker Desktop。
我需要进行的初始化操作是使用仅在容器内部可确定的值更新/etc/hosts,具体而言是与host.docker.internal相关联的IP地址。
我尝试让Dockerfile内的非root用户将/etc/hosts设为可写,但这也不起作用。当容器运行时,/etc/hosts是一个挂载的卷,chmod和chown似乎对正在运行的容器中的文件没有影响。