如何设置官方Docker镜像的UID?

如果我们从官方的Docker镜像启动两个容器

docker run --name some-redis -d redis:alpine docker run --name another-redis -d redis:alpine 

他们将运行相同的UID(100)

 ➜ ~ ps uax|grep redis 100 6721 0.1 0.1 16496 7188 ? Ssl 17:02 0:01 redis-server 100 6913 0.1 0.1 16496 7160 ? Ssl 17:03 0:01 redis-server 

这是我想避免的安全风险。 另外,我想避免使用支持用户命名空间的内核。

在我自己的图像中,我可以创build一个简单的初始化脚本。 例如, main.rb

 uid = ENV['UID']&.to_i `chown -R #{uid}:#{uid} /app` if uid Process.uid = uid || (Process::UID.from_name 'nobody') exec 'rackup' 

把这些行放在Dockerfile

 RUN chown -R nobody:nogroup /app CMD ["ruby", "main.rb"] 

然后,我可以通过环境variables为我的容器设置不同的UID。 例如,使用以下docker-compose.yml

 web: build: . ports: - "127.0.0.1:8080:8080" environment: UID: 100500 

我想知道,如果有办法对Docker官方图片做同样的事情(我无法谷歌,但它似乎是官方图片应该提供的关键function)。