docker使用xhyve

时间:2016-09-26 07:05:05

标签: macos docker docker-compose dockerfile docker-machine

所以我的问题与将我的osx macbook中的主机目录挂载到机器内运行的容器有关。

在我以前的公司,他们使用了devops,我们使用的是带有virtualbox的docker,我注意到他们使用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中,我找到了项目。

然而,我没有找到" stacks"这只是一个旧的遗留目录,无论它是什么,但我没有找到它,所以它似乎已经安装"。"但它没有展示一切,只是某些东西。

所以我更进一步,我创建了一个名为" angi"的目录。在此过程之前,如果我列出项目的内容,我可以按照预期看到angi目录。

所以更进一步,我创建了一个名为" monkey"的目录,但是当我重建容器并重新启动它时,我可以看到" / projects / angi"但我看不到" / projects / monkey"

所以wtf ....就像它安装了一半的文件系统,或选择性地向我显示某些部分,或类似的东西,我不确定如何挂载主机目录,因为我没有得到我期望的结果。 / p>

有人知道可能出现的问题吗?

2 个答案:

答案 0 :(得分:2)

我在同一条船上。我安装了docker / docker-machine / docker-machine-driver-xhyve(通过自制程序)并且遇到同样的问题。

我认为正在发生的事情是,您正在主机上创建一个卷 - 在这种情况下是docker-machine,而不是您的mac os主机。我认为还需要另一次跳跃......如何发生,我不确定。

但我可以确认,使用花园品种干净的docker app为您解决这个问题。

答案 1 :(得分:1)

正如丹尼尔指出的那样,MacOS Docker容器卷不是安装到主机MacOS,而是安装到中间VM。

所以有两个选择

您可以使用(如果您的VM命名为默认值)

将所需内容复制到VM
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/

另外要小心,因为它是单向同步选项。如果你需要从机器上拿东西,一定要把它缩回。