- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 Mac 上使用 centos 图像运行 docker,我看到挂载的卷接管了 centos(内部)用户的所有权,而在文件系统上,所有权是我的(mdf:mdf)。
在 RHEL 7 上使用相同的 centos 镜像,我看到卷已安装,但在 centos 中,主目录和文件都显示我的 uid (1055)。
我可以对 insideguy:insideguy 进行递归 chown,看起来一切正常。但是回到主机文件系统,所有权已更改为注册表中的其他人,其 uid 与执行 useradd 时为 insideguy(1001) 选择的 uid 相同。
Linux 版 docker 中是否有一些基本限制导致这种情况发生?
作为另一个副作用,在我们的集群中,即使有 sudo 权限,也不能在挂载的文件系统上进行 chown;仅在本地文件系统上。因此,将 docker 主目录保留在 ~/dockerhome 中的愿望失败了,因为 docker 似乎正在尝试(并且失败)执行一些 chowns(在 Dockerfile 或启动脚本中没有描述,因此假设是--音量处理)。以适当的所有权放置在/var 或/opt 中,一切顺利。
知道这两个 docker 主机有什么不同吗?
规范:OSX 10.11.6; mac 上的 docker v1.12.1,RHEL 7 上的 v1.12.2;中心 7
最佳答案
导致这种情况发生的 OS X 上的 Docker 有一个基本限制:那就是 Docker 只能在 Linux 上运行。
在其他平台上运行 Docker 时,这需要首先设置一个 Linux VM(过去是通过 VirtualBox,尽管最近有其他选项可用),然后在该 VM 中运行 Docker。
因为 Docker 在 Linux 上本地运行,所以当您使用 docker run -v/host/path:/container/path
时,它会直接与主机共享文件系统。因此,如果在容器内运行 chown userA somefile
并且用户 A 的用户 ID 为 1001,并且在您的主机上该用户 ID 属于 userB,那么当然当您查看主机上的文件时,它们会出现归 userB 所有。这里没有魔法;这就是 Unix 文件权限的工作原理。例如,如果您要将磁盘或 NFS 文件系统从一台主机移动到另一台本地 /etc/passwd
文件中有冲突条目的主机,您会得到相同的行为。
大多数 Docker 容器都以 root
身份运行(或者至少不是您的本地用户)。这意味着 Docker 中的进程创建的任何文件通常不归您所有,如果您尝试访问不允许此类访问的文件系统,这当然会导致问题。您在使用 Docker 时的选择与您在不使用 Docker 时的选择几乎相同:要么确保您以自己的用户身份运行容器——这可能是不可能的,因为许多镜像都是假设它们将以 root 身份运行的—— - 或安排将文件存储在其他地方。
这是许多人不鼓励使用主机卷挂载的原因之一,因为它会导致这种混淆(也因为在与远程 Docker API 交互时,远程 Docker 守护进程没有任何访问本地主机文件系统)。
对于 Mac 版 Docker,有一些神奇的文件共享可以将您的本地文件系统暴露给 Linux VM(例如,对于 VirtualBox,Docker 可以使用 shared folders 功能)。该转换层可能是您在 OS X 上注意到的与文件所有权相关的行为的原因。
关于linux - mac 上的 Docker 分离了内部和外部文件所有权;在 Linux 上不是这样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40165921/
如何指示 webpack 排除所有 d3 模块? // does not work externals: { "d3-*": "d3" } 所以如果应用导入了d3-submod
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: What does “outer =>” really mean? 我在哪里可以找到有关信息 trait After
这是一个简单的循环,我正在尝试对性能进行基准测试。 var extremeLoop=function(n){ var time=new Date() var t=0; for(
问题+概述 下面是两个片段,其中包含最初隐藏的 div,然后通过单击 button 和 jQuery 的 .show() 显示。两个 div 都具有由外部样式表应用的 display: grid; 样
我有一个 HTML 页面和一个单独的 .js 文件,该文件包含在带有 的页面中标签。 这是我的 .js 文件: element = document.getElementById("test");
我在 linux 静态库项目中有 3 个文件,我想在两个类方法实现文件中使用的静态字段存在链接问题。我有 class1.h、class1main.cpp 和 class1utils.cpp。 clas
我正在尝试将颜色背景更改为默认背景颜色,当我点击输入框外 我尝试使用“null”或“none”但没有用? window.addEventListener('click', outsideClick);
我正在编写一个应用程序,要求用户在手机上选择各种类型的文件。我使用此代码启动文件选择器 Intent : Intent intent = new Intent(Intent.ACTION_GET_C
在 android 中,不可移动(内部)的外部存储和内部存储有什么区别?我不确定在哪里保存我的数据。我只需要保存一个人可以随时提取的游戏统计数据 谢谢 最佳答案 在许多较新的设备中,将不再有物理区别,
在 C++ 中,假设我们有这个头文件: myglobals.h #ifndef my_globals_h #define my_globals_h int monthsInYear = 12; #en
我正在尝试使用 externs 在 C++ 中连接到 Ada。这两种实现有什么区别? 实现A namespace Ada { extern "C" { int getN
这个问题在这里已经有了答案: Get selected element's outer HTML (30 个答案) 关闭 2 年前。 想象一下我们有这样的东西: Hello World 如果我们这样
假设我在模块的顶部有这个: Public Declare Function getCustomerDetails Lib "CustomerFunctions" () As Long 如果我从 VB6
我目前正在使用这段代码: var wordRandomizer = { run: function (targetElem) { var markup = this.creat
我们正在使用 SVN 试水,并以 Beanstalk 作为主机。我们的设置如下所示: 存储库:模块 模块一 模块二 模块 3 存储库:网站1 自定义网站代码 svn:对模块 1 的外部引用 svn:对
有没有办法在负载均衡器中设置自动外部 IP 分配给像谷歌这样的服务? 我在裸机上运行 Kubernetes。 谢谢 最佳答案 使用 nodePort 类型的服务,它会将您的服务绑定(bind)到所有节
是否有可能在 Controller 之外使用 generateUrl() 方法? 我尝试在带有 $this->get('router') 的自定义存储库类中使用它,但它没有用。 更新 我在这里找到了一
我目前正在尝试通过 Webpack 外部对象外部化 Angular 依赖项来缩短构建时间。到目前为止,我已经为 React 和其他小库实现了这一目标。 如果我只是移动 '@angular/compil
我想创建一个自动应用其他插件的插件(外部插件)。这要求在我称为“应用插件”之前为插件设置构建脚本依赖项。但是似乎我无法在插件中添加buildscript依赖项,或者得到了: 您不能更改处于未解析状态的
我是R包的创建者EnvStats . 有一个我经常使用的函数,叫做 stripChart .我刚开始学习ggplot2 ,并在过去几天里仔细研究了 Hadley 的书、Winston 的书、Stack
我是一名优秀的程序员,十分优秀!