Parallels / docker-machine-parallels

Parallels driver for Docker Machine https://github.com/docker/machine
MIT License
471 stars 35 forks source link

Parallels driver not syncing folder #25

Closed janklan closed 8 years ago

janklan commented 8 years ago

I saw similar issue being already pasted, but saw no workaround or a solution, so I'd like to bring this to light again.

I am trying to docker-compose a set of images using Parallels on OS X 10.11.1 using this http://pastebin.com/dc3mNYY5. Resulting set of docker containers should be used as a symfony app server base with the whole app located in ./application directory relative to the docker-compose.yml file and that is all.

When this YML file is executed with virtualbox provider, everything works.

When it gets executed on a docker machine using parallels driver, the directory /var/www/app is there, but is empty.

Mount shows the /var/www/app mounted in both cases as follows:

Virtualbox

root@0c373a60e799:/var/www/app# ls
README.md  app  bin  composer.json  composer.lock  src  vendor  web
root@0c373a60e799:/var/www/app# mount | grep www/app
none on /var/www/app type vboxsf (rw,nodev,relatime)
root@0c373a60e799:/var/www/app#

Parallels

root@646168514ec2:/var/www/app# ls
root@646168514ec2:/var/www/app# mount | grep var/www
tmpfs on /var/www/app type tmpfs (rw,relatime,size=917172k)
root@646168514ec2:/var/www/app# 

I have freshly installed Parallels Desktop Pro 11.1.0 (32202) and Parallels driver for docker-machine installed via brew. I had boot2docker installed previously so I had to remove it's files in /usr/local/bin and then re-link brew-made binaries. I'm not sure if that is relevant in any way.

Any ideas?

legal90 commented 8 years ago

1) How have you started your VM - with docker-machine command, or with Parallels Desktop GUI? (I'm asking this because of https://github.com/Parallels/docker-machine-parallels/issues/14#issuecomment-156752549)

2) Check - whether your application files are shared with the VM or not? Just execute this command staying in your project root (where docker-compose.yml is located) :

docker-machine ssh <vm_name> -- ls `pwd`/application
janklan commented 8 years ago

Hi,

1) docker-machine 2) Can't do, sorry -- I already bought VMWare desktop and am using docker with it. Parallels is no longer working on my computer

legal90 commented 8 years ago
    volumes:
   - "./application:/var/www/app"

At this moment it works only if ./application is located in /Users or any of its child directories (details: https://github.com/Parallels/docker-machine-parallels/issues/28#issuecomment-164242175).

2) Can't do, sorry -- I already bought VMWare desktop and am using docker with it. Parallels is no longer working on my computer

That's sad. Then I close this issue now, but I would appreciate anyone who will help to reproduce this issue.

mrwilby commented 8 years ago

I think I am seeing this problem. Created the docker machine VM using:

docker-machine create --driver=parallels \
    --engine-insecure-registry <...> \
    --parallels-cpu-count=2 \
    --parallels-memory 8096 \
    --parallels-no-share \
    --parallels-boot2docker-url="https://github.com/boot2docker/boot2docker/releases/download/v1.9.1/boot2docker.iso" \
    default

Tried with/without --parallels-no-share, also --parallels-boot2docker image specified explicitly.

In my case, the underlying boot2docker vm appears to contain a /Users/ folder that matches the volume specification inside my Dockerfile, but the content is completely empty.

I am trying to find a solution that allows me to edit files on my host (MacOSX) and see those changes detected within the docker container. I've tried just about everything but only https://github.com/brikis98/docker-osx-dev has come close. Unfortunately it supports only one-way sync and I need bidirectional.

legal90 commented 8 years ago

@mrwilby If you set --parallels-no-share, then nothing will be shared with the VM, at least via Parallels Shared Folders mechanism. So, you shouldn't set it if you want to share your host's /Users or subdirs with the VM and then with the Docker container.

In my case, the underlying boot2docker vm appears to contain a /Users/ folder that matches the volume specification inside my Dockerfile, but the content is completely empty.

The content could be observed from the VM, but it is empty if you look at it from the container, right? I can try to investigate this problem if you share the Dockerfile, which could be used to reproduce the issue.

mrwilby commented 8 years ago

@legal90 - hello & thanks. Yes, I noticed the --no-share behavior was identical with vmware so figured as much - you just beat me to posting :) So you can ignore this I think. I think this is a case of stupid user error.

Whilst I am here, do you know if parallels is capable of propagating file system notifications to the container? As far as I can tell this is not working but not sure if that is intended or otherwise.

legal90 commented 8 years ago

@mrwilby I don't know details about that, but if you will notice that shared filesystem (prl_fs in Linux VM) doesn't work with Docker containers, please file a new issue here.

P.s. We already have one issue with MongoDB use case (caused by mmap implementation): https://github.com/Parallels/docker-machine-parallels/issues/28#issuecomment-164242178