所以我的问题与将我的osx macbook中的主机计算机目录安装到机器内运行的容器有关。
在我以前的公司,他们使用devops,我们使用docker和virtualbox,我注意到他们使用VBoxManage将目录挂载到docker机器,并从那里将这些文件夹安装到容器中。
但是,既然我没有使用virtualbox,而是xhyve虚拟机,我想知道如何访问容器内的主机目录。
我想托管数据库和代码库,在nginx容器中托管它们,然后当代码在主机上时,使用IDEA编辑代码,然后给我一个工作平台。
但是,每当我按照我认为应该有效的说明操作时,它似乎无法正常工作。
例如,我的nginx配置是这样的:
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并且它包含SOMETHING,但不是我期望的。
例如,在“。”中我在docker compose的volumes语句中使用的目录,我有一个名为projects的目录,在docker容器中的/ dev / test中,我确实找到了项目。
但是,我没有找到“堆栈”这只是一个旧的遗留目录,无论它是什么,但我没有找到它,所以它似乎已经挂载“。”但它没有展示一切,只是某些东西。
所以我更进了一步,在这个过程之前我创建了一个名为“angi”的目录,如果我列出了项目的内容,我可以看到我预期的angi目录。
再进一步,我创建了一个名为“monkey”的目录,但是当我重建容器并重新启动时,我可以看到“/ projects / angi”,但我看不到“/ projects / monkey”
所以wtf ....就像它安装了一半的文件系统,或选择性地向我显示某些部分,或类似的东西,我不确定如何挂载主机目录,因为我没有得到我期望的结果。
有人知道可能出了什么问题吗?
我在同一条船上。我安装了docker / docker-machine / docker-machine-driver-xhyve(通过自制程序)并且遇到同样的问题。
我想发生了什么,你在主机上创建一个卷 - 在这种情况下是docker-machine,而不是你的mac os主机。我认为还有另一个跳跃......如何发生,我不确定。
但我可以确认,使用花园品种干净的docker app为您解决这个问题。
正如Daniel所指出的那样,MacOS Docker容器卷不是安装在主机MacOS上,而是安装在中间VM上。
所以有两种选择
您可以使用所需的内容复制VM(如果您的VM名为default)
docker-machine scp [localfiles] default:./
或者您可以使用sshfs执行额外的半自动步骤:
docker-machine mount default:[/mountpoint] [localpath]
第二个选项需要brew提供的sshfs
brew tap caskroom/cask
brew cask install osxfuse
brew install sshfs
更多细节发布在https://docs.docker.com/machine/reference/mount/
另外要小心,因为它是单向同步选项。如果你需要从机器上获取东西,请确保将其缩回。