栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用gosu vs USER的Docker

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用gosu vs USER的Docker

Dockerfile用于创建映像。当您无法再在Dockerfile中的运行命令之间更改用户时,我认为gosu作为容器初始化的一部分更有用。

创建映像后,可以使用gosu之类的东西在容器内入口点的末尾删除root权限。您最初可能需要root用户访问权限才能执行一些初始化步骤(修复uid,主机安装的卷权限等)。然后,一旦初始化,您将在没有root特权的情况下运行最终服务,并以pid
1的形式运行以干净地处理信号。


编辑:这是在docker和jenkins的映像中使用gosu的简单示例:https : //github.com/bmitch3020/jenkins-
docker

entrypoint.sh查找/var/lib/docker.sock文件的gid,并更新容器内的docker用户的gid以匹配。这允许将映像移植到主机上的gid可能不同的其他docker主机。更改组需要在容器内部具有root用户访问权限。如果我

USERjenkins
在dockerfile中使用过,我会被镜像中定义的docker组的gid所卡住,如果它与正在运行的docker主机不匹配,它将无法工作。但是,运行gosu所在的应用程序时,可以删除root用户访问权限。

在脚本末尾,exec调用可防止shell分叉gosu,而是用该进程替换pid
1。Gosu依次执行相同的操作,切换uid,然后执行jenkins进程,以使其接替pid1。这允许正确处理信号,否则外壳将忽略该信号为pid 1。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/378823.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号