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将无法启动。
我发现这个问题在这里被认为是提议机器共享