在Dockerfile中使用显式UID/GID
最佳实践页面提到以下内容: () 显式指定UID/GID的意义是什么? 在什么情况下,允许系统分配UID/GID不能提供足够的安全性在Dockerfile中使用显式UID/GID,docker,containers,Docker,Containers,最佳实践页面提到以下内容: () 显式指定UID/GID的意义是什么? 在什么情况下,允许系统分配UID/GID不能提供足够的安全性 显式指定这些值似乎有导致显式指定值(UID/GID)已在使用的情况的缺点。我认为这对于可能依赖特定数字UID的人来说更为重要,可能需要将数据注入容器 #这需要容器进程能够读取 #它作为非根用户“www数据”运行 #我们认为它的uid是18 sudo chown-R 18数据 sudo docker run-v./data:/data-p 8888:80 image
显式指定这些值似乎有导致显式指定值(UID/GID)已在使用的情况的缺点。我认为这对于可能依赖特定数字UID的人来说更为重要,可能需要将数据注入容器
#这需要容器进程能够读取
#它作为非根用户“www数据”运行
#我们认为它的uid是18
sudo chown-R 18数据
sudo docker run-v./data:/data-p 8888:80 imagename
现在,如果由于图像作者或最终用户控制之外的基本图像的更改,adduser
使uid成为其他内容,则类似的方法将中断(主机无法直接查看容器的/etc/passwd
文件以了解实际uid是什么)
要解决这个问题,您可能需要这样的配方:
#获取uid可能有效,也可能无效
容器UID=$(sudo docker运行--rm imagename id-u)
sudo chown-R“$CONTAINER\u UID”数据
Consider an explicit UID/GID
Users and groups in an image are assigned a non-deterministic UID/GID in that the “next” UID/GID is assigned regardless of image rebuilds. So, if it’s critical, you should assign an explicit UID/GID."