docker 容器 如何用其他用户启动 (docker 是root安装)
1
创建名为tom的用户组
groupadd tom
创建名为tom的用户,并将其加入tom组
useradd -g tom tom
2
查询 宿主机的 uid 用于第三部中
查询组 的 UID
id -g tom
查询用户 tom 的 UID
id -u tom
3 修改 dockerfile
# 基于open jdk 11 运行
FROM adoptopenjdk/openjdk11:jre11u-nightly
# 创建日志文件
RUN mkdir -p /app/log/
# 创建工作目录
RUN mkdir -p /app
# 创建上传文件目录
RUN mkdir -p /app/file
#将jar拷贝到 镜像中
COPY ./test.jar /app/test.jar
# 创建 tom 组 注意这里的组id 1000 和宿主机一样
RUN groupadd -g 1000 tom
# 创建tom 用户 加入 tom 组 用户id 1000 和宿主机一样
RUN useradd -u 1000 -g tom tom
RUN chown -R tom:tom /app
USER tom
#指定工作空间
WORKDIR /app
#暴露端口8080
EXPOSE 8080
#运行
ENTRYPOINT ["java","-jar","test.jar"]
4
在宿主机上的挂载文件夹 /app 也要改为tom用户
chown tom:tom -R /app
5
给docker.sock 赋权 否则 tom用户无法执行 docker 容器
chmod 777 var/run/docker.sock
6
执行dockerfile 形成 镜像
docker build -t test:v1.0 .
7 运行
启动docker 时候要 指定用户 tom
docker run -d -p 8080:8080 \
-v /app:/app \
--name test \
--user tom \
test:v1.0
- 本文标签: Linux 中间件
- 本文链接: https://www.sqhelp.cn/article/36
- 版权声明: 本文由沙丘原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权