美文网首页
Docker volume mount 权限问题

Docker volume mount 权限问题

作者: 偷油考拉 | 来源:发表于2023-01-08 20:03 被阅读0次

一、故障表现

Dockerfile 如下

FROM eclipse-temurin:11
MAINTAINER yinwenbin@rhuassurance.com

RUN useradd mservice 

# 工作目录
ENV APP_HOME /apps
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
VOLUME $APP_HOME/logs
VOLUME $APP_HOME/config

ARG JAR_FILE=target/*.jar
COPY $JAR_FILE .
COPY ./docker-entrypoint.sh .
RUN chown -R mservice:mservice $APP_HOME && chmod +x ./docker-entrypoint.sh

USER mservice:mservice

ENTRYPOINT ["./docker-entrypoint.sh"]
EXPOSE 8080/tcp

在容器中,VOLUME目录表现为root。即便 chown也没有用。导致容器内app写入失败。

[root@localhost ~]# docker exec -it test /bin/bash
mservice@e45cc10d4914:/apps$ ls -l
total 8
drwxr-xr-x. 2 root     root        6 Nov 14 08:13 config
-rwxr-xr-x. 1 mservice mservice 1552 Nov 14 06:59 docker-entrypoint.sh
drwxr-xr-x. 2 root     root        6 Nov 14 08:13 logs
-rw-r--r--. 1 mservice mservice 2753 Nov 14 06:29 test.jar

使用 -v--mount ,也是一样的

二、解决方案一: 容器内服务以root运行

docker run -it --rm -v /docker_data/test/logs/:/apps/logs/ --name test test
docker run -it --rm -v /docker_data/test/logs/:/apps/logs/ -v /docker_data/test/config/:/apps/config/ --name test test

三、解决方案二: 在挂载成功后,通过脚本修改属性

四、rootless docker mode

五、git issue 2259

https://stackoverflow.com/questions/33681396/how-do-i-write-to-a-volume-container-as-non-root-in-docker
https://github.com/moby/moby/issues/2259

这个问题到现在还没有解决掉。

相关文章

网友评论

      本文标题:Docker volume mount 权限问题

      本文链接:https://www.haomeiwen.com/subject/ttilxdtx.html