Macos docker使用xhyve在osx上编写装载主机目录
因此,我的问题与将主机目录从osx macbook装入机器内部运行的容器有关 在我以前的公司中,他们使用devops,我们使用docker和virtualbox,我注意到他们使用VBoxManage将目录装载到docker机器中,然后将这些文件夹装载到容器中 然而,现在我使用的不是virtualbox,而是xhyve虚拟机,我想知道如何访问容器中的主机目录 我想托管数据库和代码库,将它们托管在nginx容器中,然后当代码在主机上时,使用IDEA编辑代码,这将为我提供一个工作平台 然而,每当我按照我认为应该有效的说明操作时,它似乎并不正确 例如,我的nginx配置如下:Macos docker使用xhyve在osx上编写装载主机目录,macos,docker,docker-compose,dockerfile,docker-machine,Macos,Docker,Docker Compose,Dockerfile,Docker Machine,因此,我的问题与将主机目录从osx macbook装入机器内部运行的容器有关 在我以前的公司中,他们使用devops,我们使用docker和virtualbox,我注意到他们使用VBoxManage将目录装载到docker机器中,然后将这些文件夹装载到容器中 然而,现在我使用的不是virtualbox,而是xhyve虚拟机,我想知道如何访问容器中的主机目录 我想托管数据库和代码库,将它们托管在nginx容器中,然后当代码在主机上时,使用IDEA编辑代码,这将为我提供一个工作平台 然而,每当我按照
FROM nginx:latest
RUN rm /etc/nginx/conf.d/default.conf
ADD ./default.conf /etc/nginx/conf.d/
EXPOSE 80
EXPOSE 443
version: "2"
services:
nginx_php:
build: docker/nginx
ports:
- "10000:80"
volumes:
- .:/var/test
我的docker作文是这样的:
FROM nginx:latest
RUN rm /etc/nginx/conf.d/default.conf
ADD ./default.conf /etc/nginx/conf.d/
EXPOSE 80
EXPOSE 443
version: "2"
services:
nginx_php:
build: docker/nginx
ports:
- "10000:80"
volumes:
- .:/var/test
现在,当我编写docker compose时,使用“docker exec-it bash”将shell放入docker容器中,我可以列出目录并查找/var/test,它包含一些内容,但不是我所期望的
例如,在docker compose中volumes语句中使用的“.”目录中,我有一个名为projects的目录,在docker容器中的/dev/test中,我找到了projects
但是,我找不到“stacks”,它只是一个旧的遗留目录,不管它是什么,但我找不到它,所以它似乎已经挂载了。“但它并没有显示所有内容,只是显示某些内容。”
因此,我更进一步,在这个过程之前,我创建了一个名为“angi”的目录,如果我列出项目的内容,我可以像预期的那样看到angi目录
因此,再进一步,我创建了一个名为“monkey”的目录,但当我重新构建容器并再次启动它们时,我可以看到“/projects/angi”,但我看不到“/projects/monkey”
所以wtf…它就像是挂载了文件系统的一半,或者选择性地向我显示某些部分,或者类似的东西,我现在不确定如何挂载主机目录,因为我没有得到预期的结果
有人知道会出什么问题吗?我也有同感。我已经安装了docker/docker machine/docker machine驱动程序xhyve(通过自制),并且存在同样的问题 我认为现在发生的是,您正在主机上创建一个卷—在本例中,它是docker机器,而不是mac os主机。我认为需要再跳一次。。。我不确定这是怎么发生的
但我可以确认,使用花园品种清洁码头应用程序会为您解决这一问题 正如Daniel指出的,MacOS Docker容器卷不是装载到主机MacOS,而是装载到中间VM 所以有两种选择 您可以使用将需要的内容复制到虚拟机(如果您的虚拟机名为default) 或者,您可以使用sshfs执行附加步骤半自动:
docker-machine mount default:[/mountpoint] [localpath]
第二个选项需要sshfs,可从brew获得
brew tap caskroom/cask
brew cask install osxfuse
brew install sshfs
详情请参阅
也要小心,因为它是单向同步选项。如果您需要从机器上获取某些内容,请确保将其还原。我没有找到解决问题的方法,除了停止使用旧的docker并使用docker for Mac之外,我已在本github中描述了该问题: