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

如何访问Docker for Mac上的共享宗卷

秋阳旭
2023-03-14

我查看了这里的文档:

https://docs.docker.com/docker-for-mac/install/#install-为mac运行docker

它没有提到任何关于<code>boot2docker</code>的内容,尽管这些行中的一些其他问题谈到了这一点:

将卷挂载到 OSX 上的 Docker 映像

问题是——< code > Docker for Mac 应用程序通过< code >偏好设置提供文件共享

理想情况下,我正在尝试创建一个类似于Vagrant的同步文件夹的场景,这样我就可以独立于Docker Image编辑Host env上的文件,但这些文件在保存时会自动更新到Docker镜像。

明确地说,之所以问这个问题,是因为我无法让< code>-v docker命令工作。例如

/Users/geoidesic/Documents/projects/arc/mysite/djangocms_demo/djangocms_demo-d-p 8001:8000test_shared_volumesbluszcz/djangocms

使用上面的命令,容器立即停止,所以如果我运行< code>docker ps,正在运行的容器列表是空的。

但是,如果我在不使用-v命令的情况下运行容器,那么它将按预期运行:

docker run -d -p 8001:8000 --name test_shared_volumes bluszcz/djangocms

共有1个答案

康恩
2023-03-14

更新:

如果你想在主机和容器之间共享文件/目录,你需要使用Docker的绑定挂载。

例如,如果我想将主机的/etc/resolv.conf共享到我的容器,我可以执行以下操作:

docker run -v /etc/resolv.conf:/etc/resolv.conf <IMAGE>

其中-vpart告诉容器重用主机的/etc/resolve.conf。每当我编辑此文件时,容器都会立即看到更改。

在Linux中,您可以使用这种方式将几乎任何主机文件共享给容器。遗憾的是,Mac的情况并非如此。我在之前的回答中提到过,默认情况下你只能直接共享< code>/Users/、< code>/Volumes/、< code>/private/和< code>/tmp。

在我的Mac上,我想将/data目录共享到一个容器。我运行以下命令:

docker run -it --rm -v /data:/data busybox sh

然后它会弹出一个令人不快的错误:

docker: Error response from daemon: Mounts denied:
The path /data
is not shared from OS X and is not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.
See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.

所以你看,这就是文件共享出现的地方。

接下来是我对你的问题的回答:

  1. 文件共享并没有像您在VagANT中体验的那样为您提供一种即用型的共享方式;
  2. 要在主机和容器之间共享文件/文件夹,请使用Dockers绑定挂载。

希望有帮助。

老回答:

文件共享由Docker的绑定挂载功能使用。默认情况下,您可以直接在/User//Volums//私有//tmp中绑定挂载文件。对于其他路径,您需要将它们添加到首选项-

绑定装载的用例:

  1. 持久化运行容器生成的数据,以便您可以备份或迁移数据
  2. 多个正在运行的容器共享数据量
  3. 将主机配置文件共享到容器
  4. 在主机和容器之间共享源代码,使调试更容易

注意:对于情况#1和#2,考虑使用卷而不是绑定挂载。

 类似资料:
  • 问题内容: 我有一个带有.groovy脚本的共享库,可以在jenkinsfile中这样调用: 我要执行的共享库中也有一个.ps1文件。但是,如果当我从jenkinsfile调用共享库函数时从共享库函数中执行该操作,则当前工作目录就是jenkinsfile所在管道的jenkins工作目录(通常是您想要的)。 有没有办法访问共享库中的文件?我想要做 问题答案: 您只能使用内置步骤获得内容。这就是为什么

  • 问题内容: 我正在尝试编写一个Java应用程序,该应用程序将访问其他 共享 邮箱以阅读电子邮件并执行其他活动。我阅读自己的INBOX(或其文件夹和内容)没有问题,但是很难找到有关如何访问(并最终解析/读取)共享邮箱的信息。 问题答案: 在其他答案的帮助下,我找到了以下解决方案,该解决方案适用于com.sun.mail:javax.mail:1.6.2 使用javax.mail:mail:1.4.7

  • 假设我被授予访问其他用户日历的权限。我可以在Google calendar web UI的“其他日历”下成功地查看该日历。 该日历可以通过Caldav访问吗?如果是,怎么做? 我的CalDAV客户端开始查看https://apidata.googleusercontent.com/CalDAV/v2,并通过oauth2进行身份验证。它遵循当前用户主体URL,并从那里到日历主页集。在calendar

  • 如何知道使用Exchange EWS API共享了哪个日历。

  • 由于Windows 2012R2不再支持SMB 1协议,没有一些注册表黑客攻击,有没有人在只支持SMB 2.1或SMB 3的Java中成功使用SMB共享? JCIFS库显然只是SMB 1,所以它已经过时了。我看到微软有一个针对Azure的Java库,但这似乎是在利用服务,而不是SMB。

  • 我有两个react项目父项目和公共项目(包含公共组件,如页眉、页脚) 我在父级中定义了素材主题,并使用以标准方式配置了素材主题。 但是,此主题对象在父级中定义的组件中可用,但在共享项目公共中不可用。 欢迎提出建议。 2020年10月30日更多详情添加如下 父组件 共享组件 共享组件样式 父组件将定义为红色,我希望在Header中应用同样的颜色,但它正在选择一个不同的主题(默认)对象,该对象具有蓝色

  • 我有一个网站,在本地主机上运行良好。 在我上传到我的godaddy主机后,我的网站出现了一个bug。结论是,我必须更改php上的内存限制。ini文件,但找不到php。FTP管理器上的ini。 我曾尝试: 找到更改到分类FTP管理器的方法。 创建/上传php.ini文件从本地和不工作。 我的问题是:我如何解决这个问题?我必须换php。ini文件。有人有像我这样的经验吗?

  • 问题内容: 我有一个网站,并且在我的本地主机上运行良好。 在Godaddy托管上上传后,我的网络出现了错误。结论是,我必须更改php.ini文件上的memory_limit,但无法在FTP管理器上找到php.ini。 我试图: 找到更改为“分类FTP”管理器的方法。 从本地创建/上传php.ini文件,但不起作用。 我的问题是:我该如何解决?我必须更改php.ini文件。有人有像我这样的经历吗?