目录的 Сontent 仅在 Docker 卷中部分绑定

Сontent of the directory is only partially bonded in Docker Volumes

提问人:alks 提问时间:7/29/2023 最后编辑:alks 更新时间:7/30/2023 访问量:71

问:

我有一个在 Docker 容器中运行的 Node.JS 服务,该容器通过 REST 部署相关的 Docker 容器(Docker-outside-of-Docker)。

操作序列(在 NodeJS 容器内):

  1. 创建一个新文件夹。
  2. 从 git 存储库下载具有目录结构和文件的存档。
  3. 提取存档(目标文件夹也是 NodeJS 容器中的卷)。
  4. 将该命令应用于整个提取的内容。chown -R 0755 .
  5. 编辑文件(这里没什么特别的;所有挂载的文件都标记为 - 读写)。docker-compose.ymlvolumes:rw
  6. 跑。docker-compose up -d

运行后,我注意到容器中指定的目录中的某些内容不存在( - 空文件夹,但在解压缩的文件中,我看到这个文件夹不是空的。docker-compose up -dvolumesls -la

为什么会这样,我该如何解决这个问题?

我已经试过了:

  1. 以 、root
  2. 授予模式,privileged
  3. 在 ,sleepdocker-compose up -d
  4. 改变chmod -R 0777 .chown www-data:www-data
  5. 替换为mvcp
  6. 替换为:rw:Z

UPD: 基本操作系统:

# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"

基于 NodeJS 容器 (Debian 12)
基于
node:20-slimphp:8.2-fpm-alpine3.18

UPD:添加更多想法:

在我正在创建的容器中,我的用户是 www-data。但是,在 nodejs 容器中,www-data 用户的 UID/GID = 33,而在 alpine 容器中,它是 UID/GID = 82(也许这导致了冲突?
我相信问题出在这里的某个地方,有文件权限。

更新: 我在 NodeJS 容器中从 Debian 切换到 Alpine,但问题仍然存在。

更新: 在容器内执行时,很明显,某些文件夹(包含在卷中)具有不同的用户作为所有者。尝试更改用户会导致错误 。
但是,如果停止一个容器,然后从 的用户执行,则容器将启动,并且所有权限都是正确的。
ls -lachown -R 82:82 [folder]chown: [folder]: Operation not permitteddocker-compose up -droothost machine

linux docker-compose chmod chown

评论

0赞 cyqsimon 7/30/2023
您好,欢迎来到 StackOverflow。首先,这篇文章对于第一篇文章来说质量非常好(不幸的是,这在当今太罕见了)。您能否也包括您的 Linux 发行版信息()?如果您使用的是 Fedora 或 RHEL,它可能与 SELinux 有关。cat /etc/os-release
0赞 alks 7/30/2023
谢谢你,我很高兴加入社区!当然,我补充了我的问题。
0赞 KamilCuk 7/30/2023
您应该创建一个最小的可重现示例。您到底在执行什么docker-compose.yml、什么卷、什么配置、什么目录、什么命令?您正在执行什么“docker-outside-of-docker”配置 - 它到底是什么意思,什么是 docker info 输出,您是通过套接字还是 docker swarm 或 ssh 在 DOCKER_HOST 中连接?

答:

0赞 KamilCuk 7/30/2023 #1

Docker 外部的 Docker

我怀疑您提供给 docker-compose 的目录是相对于 docker-compose 文件的。

你在外面的docker上运行。这意味着指定的目录是外部的目录,它们是运行 docker 守护程序的主机上的目录。volumes:

因为默认情况下会创建一个空目录,所以很可能您在运行 docker demon 的主机上创建了一堆空目录。请考虑使用表单,以便在目录不存在作为保护时,docker 失败并显示找不到目录。volumes:volumes: - type: bind source: /dir target: /dir

评论

0赞 alks 7/31/2023
你是对的!我怎么没有想到这一点!问题出在文件夹的相对路径上。谢谢!!!