原创

docker 容器 如何用其他用户启动 (docker 是root安装)

温馨提示:
本文最后更新于 2025年07月08日,已超过 24 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

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

正文到此结束
本文目录