当前位置: 首页 > 知识库问答 >
问题:

docker-container由docker-compose启动,将文件所有权改为root

汪建白
2023-03-14
services:
    ...
    main-app:
    image: mycompany/sys:1.2.3
    container_name: "main-app-container"
    ports:
    - "8080:8080"
    - "8009"
    volumes:
     - db_data:/var/lib/home/data:rw
     - /opt/mycompany/sys/config:/opt/mycompany/sys/config:rw
    networks:
    - systeminternal
    hostname:  "mylocalhost.company.com" 
volumes:
    db_data:
    driver: local
networks:
    systeminternal:

当通过docker-compose up(作为root用户)启动main-app-container时,提交容器中的许多目录中的文件系统权限都改为root!这是运行在Ubuntu 14.04,Docker 1.12.x(不确定哪个x)。

我们有另一个系统,在那里我们以本地用户的身份运行一切。当我们将shell执行到该容器中时,所有文件特权都是本地用户的,在提交时,本地用户是所有权。从谷歌搜索,我很确定这与卷有关,但找不到任何明确的东西。欢迎任何帮助!

共有1个答案

孙梓
2023-03-14

这是主机挂载的预期行为,也就是说,/opt/mycompany/sys/config中的所有内容都将具有与主机上的文件相同的UID/GID-这是设计的。

或者将文件更改为您在主机上需要的UID/GID:chown-r 123:321/opt/mycompany/sys/config或者将容器设置为乐于使用主机的UID/GID。

它与docker-compose无关,当您使用

 类似资料:
  • 我在使用Docker容器时遇到了一个有点烦人的问题(我使用的是Ubuntu,所以没有像VMWare或b2d这样的虚拟化)。我已经构建了我的映像,并且有一个正在运行的容器,其中有一个来自主机的共享(装入)目录和一个来自主机的共享(装入)文件。以下是命令的全文: 注意:许多用于编辑文件的工具,包括vi和sed--in-place可能会导致inode更改。从Docker V1.1.0开始,这将产生一个错

  • 问题内容: 文件,如下所示: 当我执行它时,出现以下错误: 据我所知,格式没有任何问题,例如缺少空格。我的总体目标是指定一个开发模式docker-compose文件,将其指向来自不同模块的目标目录。 我在这里做错了什么? 问题答案: 字面上几秒钟后找到了解决方案。您必须在“构建”之后删除“发现微服务”: 您也可以在上下文中使用“ ./”作为相对路径。:)

  • 我对docker比较陌生,我想知道docker-compose.yml文件和简单的docker文件有什么基本区别。

  • 下面是我的docker撰写。yml文件。 我收到错误: 无法使用connectionString连接到数据库:mongodb://root:admin@mongodb:27017/“在MongoExpress中。PFA-1根用户是在MongoExpress中显示错误后创建的。PFA-2是问题所在,因为MongoExpress在mongodb之前执行?

  • 我目前正试图找到一种独特的解决方案,用于在CI管道上本地和远程运行我的项目。在git上,我通过设置applicationContext的bean数据源url使一切正常工作。xml,如下所示: 但是,我无法配置docker compose文件,使其可以使用与前面所示相同的url。相反,它仍然需要本地主机jdbc:mysql://localhost:3306/project 我想我需要在docker

  • 我正在为一个django应用程序创建一个 docker-compose 配置,Dockerfile 成功构建,但是当我编写它们时,django 返回一个问题 - 无法连接到 posgres。 我运行<code>docker compose运行web bash<code>,发现redis和posgres都无法连接。 我的docker-compose.yml文件: 执行< code>docker-co