以 root 而不是 Docker 中的当前用户身份创建的挂载文件夹

2024-03-08

尝试从以下位置将卷安装到我的容器docker run命令。 似乎该文件夹始终以 root 用户而不是容器用户身份创建。这使得我缺乏对该文件夹的权限(无法创建或写入用于日志记录的文件)。

使用此命令进行一些测试:docker run -it --entrypoint /bin/bash -v $PWD/logs:/home/jboss/myhub/logs:rw myImage:latest

如果我现在执行命令:ls -ld /logs我得到结果:drwxr-xr-x 2 root root 4096 Jun 12 13:01 logs/

在这里我们可以看到只有所有者拥有写权限。 root 是所有者。 我希望(我想要)jboss 成为该文件夹的所有者。或者至少所有用户都具有读/写权限:rw选项中的-v范围

我在这里不明白什么?我怎样才能让它按照我想要的方式工作?


目前,这是一个反复出现的问题,没有简单的答案。

我听说有两种常见的方法。

首先涉及到chown在使用目录之前先对其进行编译。

RUN mkdir -p /home/jboss/myhub/logs ; chown -R jboss:jboss /home/jboss/myhub/logs
USER jboss

如果您需要使用不同的用户从主机系统访问文件,您可以chmod您的应用程序使用您的 jboss 用户在容器内创建的文件。

$ chmod -R +rw /home/jboss/myhub/logs

第二种方法涉及使用适当的方法创建文件chmod in Dockerfile(或在您的主机系统中)在运行应用程序之前。

$ touch /home/jboss/myhub/logs/app-log.txt
$ touch /home/jboss/myhub/logs/error-log.txt
$ chmod 766 /home/jboss/myhub/logs/app-log.txt
$ chmod 766 /home/jboss/myhub/logs/error-log.txt

当然还有更多方法可以实现这一目标,但我还没有听说过任何更多的“本机”解决方案。 我想找到一种更简单/更实用的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以 root 而不是 Docker 中的当前用户身份创建的挂载文件夹 的相关文章

  • 如何扁平化 Docker 镜像?

    我做了一个相当大的 Docker 容器 当我提交容器来创建映像时 映像大约有 7 8 GB 大 但当我export容器 不是save图像 到 tarball 并重新导入 图像只有 3 GB 大 当然 历史记录丢失了 但这对我来说没问题 因为
  • Docker、maven 和 settings.xml

    给出以下简单的 Dockerfile FROM maven 3 6 3 ibmjava 8 alpine Copy maven settings COPY settings xml usr share maven ref COPY pom
  • ASP.NET Core - 在 Visual Studio 2015 中通过 Docker 调试时出现问题

    我在 Visual Studio 中使用 Docker 运行基于 ASP NET Core 构建的应用程序时遇到问题 我的应用程序仅使用dnxcore50框架 我的project json 文件是 version 1 0 0 compila
  • 如何构建一个不链接到 musl libc 的 go 可执行文件

    So 官方的 Go 构建容器基于 Alpine 高山用途musl https www musl libc org 作为 libc 而不是 glibc 我需要在容器中构建一个可以在使用 glibc 的 Ubuntu 上运行的 Go 可执行文件
  • 为 Ruby On Rails 环境创建 Docker 映像时出错(从 Dockerfile)

    估计是环境问题 当我手动执行此操作 没有 Dockerfile 时 它可以工作 这是我的 Dockerfile FROM ubuntu 14 04 RUN apt get update RUN apt get upgrade assume
  • 重启docker Windows 10命令行

    我试图弄清楚如何在命令行中重新启动 docker 以便我可以制作一个 bat 脚本来重新启动它并启动一些容器 我使用管理员访问权限创建了一个 dos 提示符并运行以下命令 PS C Windows system32 gt net stop
  • 带有 mysql 数据的 WordPress 图像

    是否有包含 wordpress 和 mysql 数据的可用图像 当我提交并备份映像时 不包括 mysql 数据 我更喜欢两者都用一张图片 我尝试使用这个 Dockerfile 创建这样的图像 FROM tutum lamp latest R
  • 更改Docker容器中的mysql密码

    我如何更改 docker 容器中的 root 密码 因为一旦我停止 mysql 服务 容器就会自动停止 我应该停止 mysql 容器并部署一个新容器吗 您可以使用正在运行的容器更改它docker exec session https doc
  • 您可以将标志传递给 docker 运行的命令吗?

    的文档run命令遵循以下语法 docker run OPTIONS IMAGE TAG DIGEST COMMAND ARG 然而我有时发现我想传递一个标志 COMMAND 例如 我一直在与这个图片 https github com mak
  • 容器内的 Docker Macvlan 网络无法到达其自己的主机

    我在 2 个 docker 主机之间设置了 Macvlan 网络 如下所示 主机设置 HOST 1ens192 172 18 0 21 创建macvlan桥接口 docker network create d macvlan subnet
  • 网络插件未准备好:cni 配置未初始化

    Kubelet未就绪 runtime network not ready NetworkReady false reason NetworkPluginNotReady message docker network plugin is no
  • Google云构建中的两个容器之间进行通信

    我正在 Google 云构建中运行 CI CD 管道 我的应用程序有web and wget容器 我正在努力达到web from wget 内部使用云构建cloudbuild桥接网络 同时启动容器作为步骤 所以我期待这些步骤能够使用名称进行
  • udevadm 不显示 docker 容器内的所有属性

    当我运行 docker 容器并列出某些设备的属性时udevadm容器内部只有设备的基本信息 当我在主机上做同样的事情时 我可以看到更多 我该如何获取容器内的所有信息 host udevadm info query property dev
  • 如何在docker compose中为每个容器创建单独的卷

    我创建了一个docker我想为其运行多个容器的图像 这个 docker 镜像依赖于一些东西 这些东西对于所有容器来说都是相同的 但唯一的区别是容器的配置 version 2 4 services s1 image testdockerimg
  • `docker-compose up` 与使用环境变量的 `docker compose up`

    我正在尝试使用 Docker Compose 将三节点 Elasticsearch 集群部署到 Azure 容器实例 我松松地跟随这个例子 https www elastic co guide en elasticsearch refere
  • Docker:通过 Gunicorn 运行 Flask 应用程序 - Worker 超时?表现不佳?

    我正在尝试创建一个用Python Flask编写的新应用程序 由gunicorn运行 然后进行dockerized 我遇到的问题是 docker 容器内的性能非常差 不一致 我最终得到了响应 但我不明白为什么性能会下降 有时我会在日志中看到
  • 来自不安全注册表的 Dockerfile

    有没有办法从 Dockerfile 构建 docker 映像 该 Dockerfile 使用来自 Gitlab 托管的本地不安全注册表的基础映像 例如 如果我的 Dockerfile 是 FROM insecure registry loc
  • Docker容器内的动态监听端口

    我有一个应用程序 在使用其默认端口建立一些连接后 开始打开 侦听 新的随机端口来处理现有连接 然后删除它们 视频通话 它还在通信协议内交换其IP地址和端口 我能够解决IP地址问题 但仍然无法找到一种方法来动态告诉主机的IPTABLES在Do
  • AWS Lambda Sam找不到docker

    我正在尝试使用以下命令测试我的 hello world lambda 函数aws sam cli在我的项目根文件夹中使用以下命令 sam local start api debug 这在控制台中给出了以下输出 2018 07 11 16 1
  • Docker容器与主机之间的端口转发

    我是 docker 的新手 我正在尝试测试一些东西 来自docs https docs docker com userguide dockerlinks 我看到我们可以在容器和主机之间映射端口 所以我拉mariadb回购并运行这样的容器 d

随机推荐