USER 指定当前用户,希望以某个已经建立好的用户来运行某个服务进程,不要使用 su 或者 sudo,这些都需要比较麻烦的配置,而且在 TTY 缺失的环境下经常出错。建议使用 gosu
2024-10-08 13:07:32
USER 指定当前用户
格式:USER <用户名>[:<用户组>]
USER
指令和 WORKDIR
相似,都是改变环境状态并影响以后的层。WORKDIR
是改变工作目录,USER
则是改变之后层的执行 RUN
, CMD
以及 ENTRYPOINT
这类命令的身份。
当然,和 WORKDIR
一样,USER
只是帮助你切换到指定用户而已,这个用户必须是事先建立好的,否则无法切换。
RUN groupadd -r redis && useradd -r -g redis redis
USER redis
RUN [ "redis-server" ]
如果以 root
执行的脚本,在执行期间希望改变身份,比如希望以某个已经建立好的用户来运行某个服务进程,不要使用 su
或者 sudo
,这些都需要比较麻烦的配置,而且在 TTY 缺失的环境下经常出错。建议使用 gosu
。
# 建立 redis 用户,并使用 gosu 换另一个用户执行命令
RUN groupadd -r redis && useradd -r -g redis redis
# 下载 gosu
RUN wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/1.7/gosu-amd64" \
&& chmod +x /usr/local/bin/gosu \
&& gosu nobody true
# 设置 CMD,并以另外的用户执行
CMD [ "exec", "gosu", "redis", "redis-server" ]
最新文章
- Vue.js&mdash;&mdash;60分钟webpack项目模板快速入门
- DG gap sequence修复一例
- 二十八、Java基础--------正则表达式
- JNI ReferenceTable overflow
- 【日常小记】统计后缀名为.cc、.c、.h的文件数【转】
- java并发包:线程池 executorservice
- template学习一函数模板
- json写入new_hello文件
- iOS蓝牙开发(一)蓝牙相关基础知识(转)
- 【Mood-18】github 使用指南
- Ionic条码扫描
- iOS 宏定义_16进制色值转化为RGB返回UIColor类型对象
- dede去除powered by dedecms
- 整合spring2 + struts1.2 + hibernate3.2 .
- JFreeChat
- DotNet基础
- linux下的5款桌面环境
- vmware提示:此虚拟机似乎正在使用中,取得该虚拟机的所有权失败错误
- OR1200中指令Cache的结构
- scrapy爬虫框架setting模块解析
热门文章
- codeforce D. White Lines
- Apache Kafka(四)- 使用 Java 访问 Kafka
- 线性回归-Fork
- TXT文件也能挂木马
- 普及C组第四题(8.2)
- 第十篇 深入Python的dict和set(一)
- 吴裕雄 python 机器学习——支持向量机SVM非线性分类SVC模型
- Go断点续传
- SQL基础语法—create语句
- Django报错 The serializer field might be named incorrectly and not match any Got AttributeError when attempting to get a value for field `author_for` on serializer `KnownledgeBaseListSerializer`