【问题标题】:docker compose mount host directory on osx with xhyvedocker用xhyve在osx上编写挂载主机目录
【发布时间】:2016-09-26 07:05:05
【问题描述】:

所以我的问题与将主机目录从我的 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

而我的 docker compose 是这样的:

version: "2"
services:
  nginx_php:
    build: docker/nginx
    ports:
      - "10000:80"
    volumes:
      - .:/var/test

现在,当我执行 docker-compose up,然后使用“docker exec -it bash”进入 docker 容器时,我可以列出目录并找到 /var/test,它包含一些东西,但不是我所期望的。

例如,在“。”我在 docker compose 中的 volumes 语句中使用的目录,我确实有一个名为 projects 的目录,并且在 docker 容器的 /dev/test 中,我确实找到了项目。

但是,我没有找到“堆栈”,它只是一个旧的遗留目录,不管它是什么,但我没有找到它,所以它似乎已经挂载了“。”但它并没有显示所有内容,只是显示某些内容。

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

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

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

有人知道可能出了什么问题吗?

【问题讨论】:

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


【解决方案1】:

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

我认为正在发生的事情是,您正在主机上创建一个卷 - 在本例中是 docker-machine,而不是您的 mac os 主机。我认为需要再一次跳跃……这是怎么发生的,我不确定。

但我可以确认,使用花园品种 clean docker 应用程序可以为您解决这个问题。

【讨论】:

    【解决方案2】:

    正如 Daniel 指出的那样,MacOS Docker 容器卷不是挂载到宿主 MacOS,而是挂载到中间 VM。

    所以有两种选择

    您可以使用将您需要的内容复制到虚拟机(如果您的虚拟机命名为默认)

    docker-machine scp [localfiles] default:./
    

    或者您可以使用 sshfs 进行额外的半自动步骤:

    docker-machine mount default:[/mountpoint] [localpath]
    

    第二个选项需要 sshfs,可以从 brew 获得

    brew tap caskroom/cask
    brew cask install osxfuse
    brew install sshfs
    

    更多详情在https://docs.docker.com/machine/reference/mount/

    还要小心,因为它是一种方式同步选项。如果您需要从机器中获取某些东西,请确保您将其收回。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-04
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 2014-06-19
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      相关资源
      最近更新 更多