当前位置: 首页 > 面试题库 >

在OSX上将卷挂载到Docker映像

邵飞白
2023-03-14
问题内容

在Mac上,如何将卷装载到Docker容器?

在我的Linux机器上,这很容易。我需要做的只是-v /src/webapp:/opt/webapp运行容器时的操作。但是Mac是不同的,因为我必须运行boot2docker才能在VirtualBox中运行VM。我试过跑步

boot2docker init
boot2docker up
boot2docker ssh # to poke around
boot2docker stop
VBoxManage sharedfolder add "boot2docker-vm" --name "Users" --hostpath /Users
boot2docker up
boot2docker ssh "sudo modprobe vboxsf"

但我明白了

modprobe: module vboxsf not found in modules.dep

如果我忽略了它,仍然尝试像这样挂载在虚拟机

boot2docker ssh "sudo mkdir /test && sudo mount -t vboxsf Users /test"

我懂了

mount: mounting Users on /test failed: No such device

我感觉好像缺少了一些非常简单的东西,但是我无法弄清楚。任何帮助将不胜感激。


问题答案:

好的,在研究了GitHub
PR之后
,我找到了一种方法。对于将来的读者,此过程应在即将发布的boot2docker版本中修复。

# assuming boot2docker and VirtualBox are installed
wget http://static.dockerfiles.io/boot2docker-v1.2.0-virtualbox-guest-additions-v4.3.14.iso
mv boot2docker-v1.2.0-virtualbox-guest-additions-v4.3.14.iso ~/.boot2docker/boot2docker.iso
# blow away your old boot2docker-vm if it exists (boot2docker down && boot2docker destroy)
boot2docker init
boot2docker up
# set DOCKER_HOST as instructed
boot2docker stop
VBoxManage sharedfolder add boot2docker-vm --name /Users --hostpath /Users
boot2docker up
# if you ssh into the VM now, you'll notice /Users is present, but empty; I don't know/care why.
boot2docker ssh "sudo mount -t vboxsf -o uid=1000,gid=50 /Users /Users"
# done

这对我有用,所以我希望对其他人也有用。我希望在不久的将来,boot2docker将解决此问题,尤其是因为合并了我从中获得这些命令的PR以来。

编辑 :boot2docker 1.3.0支持此功能,无需任何进一步更改。更新后,我运行了以下命令:

boot2docker destroy  # start over
boot2docker download # download the udpated ISO
boot2docker init
boot2docker up
# done


 类似资料:
  • 我得到了 我觉得我错过了一些极其简单的东西,但我却无法完全弄明白。如有任何帮助,将不胜感激。

  • 问题内容: 我最近创建了一个在Windows上的boot2docker上运行的mongodb docker实例。 不幸的是,在尝试kitematic的过程中,我意外地从mongo容器中删除了该卷,并且无法再访问我的数据。 mongo实例似乎创建了一个新卷,而旧卷现在仍悬空(孤立)并且未安装在任何容器中。 有什么办法可以恢复吗? 问题答案: 感谢您的答复,它使我处于正确的轨道,我设法使用以下命令启动

  • 问题内容: 我为此付出了一切,所以希望你们能帮助我。在带有docker-machine的OSX 10.11.2中,我有一个docker- compose文件,该文件应构建一个本地Dockerfile并将MySQL容器附加到该文件。MySQL容器应该在我存储数据库数据的地方安装一个本地文件夹,因此,如果容器或VM关闭,我可以重新启动它而不会丢失数据。问题是,当我运行它时,它将引发权限错误: 我已经尝

  • 问题内容: 我正在使用Docker,并且我想挂载一个变化很大的动态文件夹(因此我不必为每次执行都制作一个Docker映像,这会太昂贵),但是我希望该文件夹是只读的。将文件夹所有者更改为其他人可行。但是,需要访问权限,而我不希望将其公开给应用程序。 当我使用flag进行挂载时,它将提供我提供的任何用户名,我在docker映像内创建了一个非root用户,但是,该卷中的所有文件都以运行docker的用户

  • 问题内容: 我正在OSX上尝试使用docker beta,主要用于Symfony开发,但是挂载的速度非常慢。即使对于香草Symfony项目,页面加载时间也只有6秒。难以忍受!有没有人找到解决此问题的方法?试图摆脱无业游民,但我只是找不到任何合理的方法来使用docker。 问题答案: 显然,目前有一种解决方法: https://forums.docker.com/t/file-access-in-m

  • 我试图使用kubernetes在spark cluster模式下从服务器读取一个文件,所以我将我的文件放在所有workers上,并使用< br> val conf = new SparkConf()挂载驱动程序卷。setAppName("sparksetuptest ")。set(" spark . kubernetes . driver . volumes . host path . host