docker工在docker机内部,不能挂载音量

我有简单的网站应用程序使用Django,postgresql。 我的小项目的结构如下所示:

. ├── docker-compose.yml └── web ├── authentication ├── bower.json ├── Dockerfile ├── manage.py ├── requirements.txt ├── static └── trello_copy 

当我只使用docker撰写构build这一切工作正常。 我创build了我的docker机,并连接到他们,然后我使用完全相同的命令:

 docker-compose build docker-compose up 

事实certificate,docker没有复制我的Web文件夹到Web容器,他只是在代码内创build代码文件夹和Web文件夹,但Web文件夹是空的。

泊坞窗,compose.yml

 postgres: image: postgres volumes: - /var/docker/postgresql:/var/lib/postgresql/data ports: - "5432:5432" web: build: ./web volumes: - ./web:/code ports: - "8000:8000" links: - postgresql:postgresql command: bash -c "python manage.py runserver 0.0.0.0:8000" 

Dockerfile

 FROM python:2.7 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip install -r requirements.txt ADD . /code/ 

我需要使用docker机进行debugging(PyCharm)。

UPDATE

我find了这个解决scheme(只适用于networking)。 首先您需要做的是在VirtualBox中使用共享文件夹。

 VBoxManage sharedfolder add <machine_name> --name <mount_name> --hostpath <host_path_to_folder_you_want_to_share> 

那么你必须通过ssh连接到你的docker-machine虚拟主机并挂载这个文件夹。

 mount -t vboxsf -o defaults,uid=`id -u docker`,gid=`id -g docker` <mount_name> <path_in_you_vm_machine> 

所以现在你的主机文件夹被挂载在vm主机上的<path_in_you_vm_machine> ,但还有另一个问题。 当你重新启动虚拟主机,你将不得不重新安装这个文件夹。 从docs boot2docker文档

我们可以看到有一个脚本在vm主机启动时被执行。 你必须把这个命令放在你的vm主机上

 /mnt/var/lib/boot2docker/bootlocal.sh 

例如:

 mkdir -p <vm_path> mount -t vboxsf -o defaults,uid=`id -u docker`,gid=`id -g docker` <mount_name> <vm_path> 

这适用于我的Web项目,但是当我使用相同的方法postgresql它不工作,原因是已装入的文件夹有不同的所有权比postgres(在这种情况下的Docker)和postgresql将无法启动。

我发现这个问题在这里被认为是提议机器共享