New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Shared Volumes Slow #188

Open
dimasnake opened this Issue Nov 1, 2016 · 101 comments

Comments

Projects
None yet
@dimasnake

dimasnake commented Nov 1, 2016

Expected behavior

File access in volumes should be comparable to access times in non-volumes, similarly to Linux installations of docker

Actual behavior

File access in volumes is many times slower than on non-volumes.

Information

Version: 1.12.3-beta29.2 (8280)
Channel: Beta
Sha1: 902414df0cea7fdc85b87f0077b0106c3af9f64c
Started on: 2016/11/01 21:19:46.408
Resources: C:\Program Files\Docker\Docker\Resources
OS: Windows 10 Pro
Edition: Professional
Id: 1607
Build: 14393
BuildLabName: 14393.351.amd64fre.rs1_release_inmarket.161014-1755

Steps to reproduce the behavior

Get on the commandline of a lightweight docker container

root@a6b2e82c167b:/# dd if=/dev/zero of=test.dat bs=1024 count=100000
100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 0.569183 s, 180 MB/s

and mount a volume:

root@a6b2e82c167b:/var/www# dd if=/dev/zero of=test.dat bs=1024 count=100000
100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 5.11662 s, 20.0 MB/s

In 9 times slower.

@friism

This comment has been minimized.

Show comment
Hide comment
@friism

friism Nov 1, 2016

Thanks for reporting. The volume mounts are implemented using a SMB share mounted over the guest/host network.

Out of curiosity, what's your development use-case that requires greater than 20 MB/s transfer-rate when using volumes?

friism commented Nov 1, 2016

Thanks for reporting. The volume mounts are implemented using a SMB share mounted over the guest/host network.

Out of curiosity, what's your development use-case that requires greater than 20 MB/s transfer-rate when using volumes?

@dimasnake

This comment has been minimized.

Show comment
Hide comment
@dimasnake

dimasnake Nov 1, 2016

I use docker for local web development. I have nginx, php-fpm, mysql containers. Speed website pages load very slow 5-10 sec.

It is possible to encrease volumes speed?

dimasnake commented Nov 1, 2016

I use docker for local web development. I have nginx, php-fpm, mysql containers. Speed website pages load very slow 5-10 sec.

It is possible to encrease volumes speed?

@xdesbieys

This comment has been minimized.

Show comment
Hide comment
@xdesbieys

xdesbieys Nov 2, 2016

I have same problem.

Inside container :

root@63d3c3f00862:/# dd if=/dev/zero of=test.dat bs=1024 count=100000
100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 0.208075 s, 492 MB/s

Insidde container share folder :

root@63d3c3f00862:/var/lib/mysql# dd if=/dev/zero of=test.dat bs=1024 count=100000
100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 11.572 s, 8.8 MB/s

Docker info :

PS C:\Users\????\Docker> docker info
Containers: 4
 Running: 4
 Paused: 0
 Stopped: 0
Images: 11
Server Version: 1.12.3
Storage Driver: overlay2
 Backing Filesystem: extfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.4.27-moby
Operating System: Alpine Linux v3.4
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.919 GiB
Name: moby
ID: DBIQ:SFE4:ZUSS:AEDJ:4KJC:ODIJ:W4L7:33D7:QUB7:OE4R:YEIE:UANK
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 41
 Goroutines: 78
 System Time: 2016-11-02T12:20:15.4120124Z
 EventsListeners: 1
Registry: https://index.docker.io/v1/
WARNING: No kernel memory limit support
Experimental: true
Insecure Registries:
 127.0.0.0/8

Docker volume inspect :

PS C:\Users\????\Docker> docker volume inspect 7c27e585d8d4f55c34a34f6a47d5c0687f0851fc55765b096183f6ee327ea609
[
    {
        "Name": "7c27e585d8d4f55c34a34f6a47d5c0687f0851fc55765b096183f6ee327ea609",
        "Driver": "local",
        "Mountpoint": "/var/lib/docker/volumes/7c27e585d8d4f55c34a34f6a47d5c0687f0851fc55765b096183f6ee327ea609/_data",
        "Labels": null,
        "Scope": "local"
    }
]

Docker compose :

version: "2"
services:
    mysql:
        image: mysql:latest
        volumes:
            - ./mysql:/var/lib/mysql
        environment:
            - MYSQL_ROOT_PASSWORD=password
            - MYSQL_DATABASE=database
            - MYSQL_USER=user
            - MYSQL_PASSWORD=password
        ports:
            - "3306:3306"
    php:
        build: ./php
        image: php:fpm
        ports:
            - "9000:9000"
        links:
            - mysql
    nginx:
        build: ./nginx
        image: nginx:latest
        volumes:
            - ./nginx/website.conf:/etc/nginx/conf.d/website.conf
        ports:
            - "80:80"
        links:
            - php
    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        environment:
            - PMA_HOST=mysql
            - MYSQL_USERNAME=user
            - MYSQL_ROOT_PASSWORD=password
        ports:
            - "8181:80"
        links:
            - mysql

Is it possible to use NFS of other file sharing system ?

xdesbieys commented Nov 2, 2016

I have same problem.

Inside container :

root@63d3c3f00862:/# dd if=/dev/zero of=test.dat bs=1024 count=100000
100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 0.208075 s, 492 MB/s

Insidde container share folder :

root@63d3c3f00862:/var/lib/mysql# dd if=/dev/zero of=test.dat bs=1024 count=100000
100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 11.572 s, 8.8 MB/s

Docker info :

PS C:\Users\????\Docker> docker info
Containers: 4
 Running: 4
 Paused: 0
 Stopped: 0
Images: 11
Server Version: 1.12.3
Storage Driver: overlay2
 Backing Filesystem: extfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.4.27-moby
Operating System: Alpine Linux v3.4
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.919 GiB
Name: moby
ID: DBIQ:SFE4:ZUSS:AEDJ:4KJC:ODIJ:W4L7:33D7:QUB7:OE4R:YEIE:UANK
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 41
 Goroutines: 78
 System Time: 2016-11-02T12:20:15.4120124Z
 EventsListeners: 1
Registry: https://index.docker.io/v1/
WARNING: No kernel memory limit support
Experimental: true
Insecure Registries:
 127.0.0.0/8

Docker volume inspect :

PS C:\Users\????\Docker> docker volume inspect 7c27e585d8d4f55c34a34f6a47d5c0687f0851fc55765b096183f6ee327ea609
[
    {
        "Name": "7c27e585d8d4f55c34a34f6a47d5c0687f0851fc55765b096183f6ee327ea609",
        "Driver": "local",
        "Mountpoint": "/var/lib/docker/volumes/7c27e585d8d4f55c34a34f6a47d5c0687f0851fc55765b096183f6ee327ea609/_data",
        "Labels": null,
        "Scope": "local"
    }
]

Docker compose :

version: "2"
services:
    mysql:
        image: mysql:latest
        volumes:
            - ./mysql:/var/lib/mysql
        environment:
            - MYSQL_ROOT_PASSWORD=password
            - MYSQL_DATABASE=database
            - MYSQL_USER=user
            - MYSQL_PASSWORD=password
        ports:
            - "3306:3306"
    php:
        build: ./php
        image: php:fpm
        ports:
            - "9000:9000"
        links:
            - mysql
    nginx:
        build: ./nginx
        image: nginx:latest
        volumes:
            - ./nginx/website.conf:/etc/nginx/conf.d/website.conf
        ports:
            - "80:80"
        links:
            - php
    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        environment:
            - PMA_HOST=mysql
            - MYSQL_USERNAME=user
            - MYSQL_ROOT_PASSWORD=password
        ports:
            - "8181:80"
        links:
            - mysql

Is it possible to use NFS of other file sharing system ?

@BlueBeN82

This comment has been minimized.

Show comment
Hide comment
@BlueBeN82

BlueBeN82 Nov 5, 2016

Same usecase and behavior for me.

BlueBeN82 commented Nov 5, 2016

Same usecase and behavior for me.

@fmasa

This comment has been minimized.

Show comment
Hide comment
@fmasa

fmasa Nov 22, 2016

@friism One of the solutions would be to allow modification of rsize&wsize parameters of smb mount. PHP projects usually consist of hundreds of small files (which have to be loaded on every request) and large rsize degrades performance for this use case.

@dimasnake Try beta 21 if you have installer, performance is much better.

fmasa commented Nov 22, 2016

@friism One of the solutions would be to allow modification of rsize&wsize parameters of smb mount. PHP projects usually consist of hundreds of small files (which have to be loaded on every request) and large rsize degrades performance for this use case.

@dimasnake Try beta 21 if you have installer, performance is much better.

@dimasnake

This comment has been minimized.

Show comment
Hide comment
@dimasnake

dimasnake Nov 22, 2016

@fmasa I don't have the installer. Where I can download 21 beta?

dimasnake commented Nov 22, 2016

@fmasa I don't have the installer. Where I can download 21 beta?

@saschanaz

This comment has been minimized.

Show comment
Hide comment
@saschanaz

saschanaz Nov 25, 2016

Here is a beta version of Docker for Windows but really beta 21? The latest beta has the version tag 2016-11-10 1.12.3-beta30.

saschanaz commented Nov 25, 2016

Here is a beta version of Docker for Windows but really beta 21? The latest beta has the version tag 2016-11-10 1.12.3-beta30.

@fmasa

This comment has been minimized.

Show comment
Hide comment
@fmasa

fmasa Nov 25, 2016

@saschanaz Yes. Take a look at the end of the tag (beta30)

fmasa commented Nov 25, 2016

@saschanaz Yes. Take a look at the end of the tag (beta30)

@dopee

This comment has been minimized.

Show comment
Hide comment
@dopee

dopee Nov 26, 2016

@dimasnake @saschanaz

I found it!
Build 5971 is beta21
https://download.docker.com/win/beta/1.12.0.5971/InstallDocker.msi

Gonna restart my machine and try it.

dopee commented Nov 26, 2016

@dimasnake @saschanaz

I found it!
Build 5971 is beta21
https://download.docker.com/win/beta/1.12.0.5971/InstallDocker.msi

Gonna restart my machine and try it.

@dopee

This comment has been minimized.

Show comment
Hide comment
@dopee

dopee Nov 26, 2016

Can't get it working. Returned to latest beta (30.1).
So frustrating, performance at work on Ubuntu is almost ten times better, while having older hardware.

dopee commented Nov 26, 2016

Can't get it working. Returned to latest beta (30.1).
So frustrating, performance at work on Ubuntu is almost ten times better, while having older hardware.

@fmasa

This comment has been minimized.

Show comment
Hide comment
@fmasa

fmasa Nov 26, 2016

I read in another issue, that installer auto-updates to latest version. :/ So once you updated, you're stuck with that version.

fmasa commented Nov 26, 2016

I read in another issue, that installer auto-updates to latest version. :/ So once you updated, you're stuck with that version.

@dimasnake

This comment has been minimized.

Show comment
Hide comment
@dimasnake

dimasnake Nov 28, 2016

@fmasa @dopee No difference in beta 21 and 30.

dimasnake commented Nov 28, 2016

@fmasa @dopee No difference in beta 21 and 30.

@dgageot dgageot changed the title from Incredibly slow (near unusable) on Docker container to Shared Volumes Slow Dec 3, 2016

@whitecolor

This comment has been minimized.

Show comment
Hide comment
@whitecolor

whitecolor Dec 3, 2016

This issue has is more appropriate name then #188

There is also alike issue in docker for mac: docker/for-mac#77

I also experience this for example with git, when I attach as volume some folder and make git operations on it, with quite large code base speed of operation is significantly slower then on dev machine.

To reproduce it you may just take some image with GIT installed and attach some big repo and try do do git status.

whitecolor commented Dec 3, 2016

This issue has is more appropriate name then #188

There is also alike issue in docker for mac: docker/for-mac#77

I also experience this for example with git, when I attach as volume some folder and make git operations on it, with quite large code base speed of operation is significantly slower then on dev machine.

To reproduce it you may just take some image with GIT installed and attach some big repo and try do do git status.

@xdrew

This comment has been minimized.

Show comment
Hide comment
@xdrew

xdrew Dec 4, 2016

Facing this issue on symfony app developing.
Symfony

xdrew commented Dec 4, 2016

Facing this issue on symfony app developing.
Symfony

@fmasa

This comment has been minimized.

Show comment
Hide comment
@fmasa

fmasa Dec 5, 2016

@dimasnake Are you sure you have beta 21 installed? I found out that installer auto-updates to latest version no matter what.

@friism Is there any roadmap for this issue?

fmasa commented Dec 5, 2016

@dimasnake Are you sure you have beta 21 installed? I found out that installer auto-updates to latest version no matter what.

@friism Is there any roadmap for this issue?

@dimasnake

This comment has been minimized.

Show comment
Hide comment
@dimasnake

dimasnake Dec 6, 2016

@fmasa I disable auto-update. I have 1.12.0-beta21 (build: 5971). You have in 21 beta performance better? Show output if this command dd if=/dev/zero of=test.dat bs=1024 count=100000 inside docker container.

dimasnake commented Dec 6, 2016

@fmasa I disable auto-update. I have 1.12.0-beta21 (build: 5971). You have in 21 beta performance better? Show output if this command dd if=/dev/zero of=test.dat bs=1024 count=100000 inside docker container.

@friism

This comment has been minimized.

Show comment
Hide comment
@friism

friism Dec 7, 2016

@fmasa we're aware of the problem. Note that volume I/O performance will likely always be slower than pure in-container performance and pure on-host performance because the host-mounted volume filesystem is mounted over a network.

We're interested in making that overhead as low as possible, of course, but we're not keen on adding a lot of toggles that users have to change depending on what software they happen to be running in containers right now.

friism commented Dec 7, 2016

@fmasa we're aware of the problem. Note that volume I/O performance will likely always be slower than pure in-container performance and pure on-host performance because the host-mounted volume filesystem is mounted over a network.

We're interested in making that overhead as low as possible, of course, but we're not keen on adding a lot of toggles that users have to change depending on what software they happen to be running in containers right now.

@fmasa

This comment has been minimized.

Show comment
Hide comment
@fmasa

fmasa Dec 8, 2016

@friism Some performance hit in mounted volumes is expected, but it for this particular use case it's just too much for DfW to be usable on daily basis.
I don't see way to optimize smb shares w/o some sort of toggles. Different stacks have different requirements. Why don' you give an option to tweak some parameters in config files if not in GUI? You're cutting not unsignificant part of community out of DfW, because the only viable workaround right now is Docker Machine or some nasty hacks.
I don't want to flame nor hate, just trying to give you some feedback from PHP world :)

fmasa commented Dec 8, 2016

@friism Some performance hit in mounted volumes is expected, but it for this particular use case it's just too much for DfW to be usable on daily basis.
I don't see way to optimize smb shares w/o some sort of toggles. Different stacks have different requirements. Why don' you give an option to tweak some parameters in config files if not in GUI? You're cutting not unsignificant part of community out of DfW, because the only viable workaround right now is Docker Machine or some nasty hacks.
I don't want to flame nor hate, just trying to give you some feedback from PHP world :)

@xdrew

This comment has been minimized.

Show comment
Hide comment
@xdrew

xdrew Dec 25, 2016

Is there any ETA?

xdrew commented Dec 25, 2016

Is there any ETA?

@friism

This comment has been minimized.

Show comment
Hide comment
@friism

friism Dec 27, 2016

@xdrew we're scheduling work on performance improvements in the first quarter of 2017.

friism commented Dec 27, 2016

@xdrew we're scheduling work on performance improvements in the first quarter of 2017.

@janhartigan

This comment has been minimized.

Show comment
Hide comment
@janhartigan

janhartigan Jan 25, 2017

@friism if it helps, the biggest difference I've been able to see in my two environments is down to two things: cpu or hard drive i/o (especially ssd vs hdd). I've been having this problem a lot in my work computer (fairly new i7, but an hdd). At home I have a slightly better i7 and an ssd and it's much faster.

Would love to see a fix for this as it's a major blocking issue in getting Docker for Windows at parity with Linux.

janhartigan commented Jan 25, 2017

@friism if it helps, the biggest difference I've been able to see in my two environments is down to two things: cpu or hard drive i/o (especially ssd vs hdd). I've been having this problem a lot in my work computer (fairly new i7, but an hdd). At home I have a slightly better i7 and an ssd and it's much faster.

Would love to see a fix for this as it's a major blocking issue in getting Docker for Windows at parity with Linux.

@friism

This comment has been minimized.

Show comment
Hide comment
@friism

friism Jan 26, 2017

Beta39 released this week has significant performance improvements. We're working on making it faster still.

friism commented Jan 26, 2017

Beta39 released this week has significant performance improvements. We're working on making it faster still.

@dimasnake

This comment has been minimized.

Show comment
Hide comment
@dimasnake

dimasnake Feb 4, 2017

I tested on 1.13.1-rc1-beta40 (9961)
The speed inside the container is now faster

root@fb3066573fe7:/var/www# dd if=/dev/zero of=test.dat bs=1024 count=100000
100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 1.36649 s, 74.9 MB/s

But loading pages of local web site has become very slow - 44 seconds.

dimasnake commented Feb 4, 2017

I tested on 1.13.1-rc1-beta40 (9961)
The speed inside the container is now faster

root@fb3066573fe7:/var/www# dd if=/dev/zero of=test.dat bs=1024 count=100000
100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 1.36649 s, 74.9 MB/s

But loading pages of local web site has become very slow - 44 seconds.

@sierran

This comment has been minimized.

Show comment
Hide comment
@sierran

sierran Feb 6, 2017

But still terrible performance with Symfony + Nginx + MySql, 11 seconds for blank page.

sierran commented Feb 6, 2017

But still terrible performance with Symfony + Nginx + MySql, 11 seconds for blank page.

@oscarnevarezleal

This comment has been minimized.

Show comment
Hide comment
@oscarnevarezleal

oscarnevarezleal Feb 21, 2017

Same problem here.
image: iamluc/symfony super SLOW

oscarnevarezleal commented Feb 21, 2017

Same problem here.
image: iamluc/symfony super SLOW

@marcandrews

This comment has been minimized.

Show comment
Hide comment
@marcandrews

marcandrews Mar 5, 2017

I have the same here with my development Node server. It's basically unusable and I have ceased using docker.

marcandrews commented Mar 5, 2017

I have the same here with my development Node server. It's basically unusable and I have ceased using docker.

@nbjohan

This comment has been minimized.

Show comment
Hide comment
@nbjohan

nbjohan Mar 14, 2017

To those with performance issues in php applications: Is the xdebug module loaded in php.ini?
I notice a big performance improvement when running php applications when I don't load the xdebug.so extension:
;zend_extension=xdebug.so

nbjohan commented Mar 14, 2017

To those with performance issues in php applications: Is the xdebug module loaded in php.ini?
I notice a big performance improvement when running php applications when I don't load the xdebug.so extension:
;zend_extension=xdebug.so

@dopee

This comment has been minimized.

Show comment
Hide comment
@dopee

dopee Mar 15, 2017

@nbjohan x-debug always slows it down no matter how you run your application (docker/vagrant/plain/etc.).

dopee commented Mar 15, 2017

@nbjohan x-debug always slows it down no matter how you run your application (docker/vagrant/plain/etc.).

@rm-bergmann

This comment has been minimized.

Show comment
Hide comment
@rm-bergmann

rm-bergmann Oct 15, 2017

I stumbled accross this interesting thread as I am looking for a good solution for my dev environment. I use (and will always use) windows with an ubunutu VM. I am still very new to docker. I have always used VM's and vagrant and always had performance problems using a shared directory so I have never used it, and I keep my project files on the linux file system.

The only disadvantage of this for me is my IDE (installed on windows) connects remotely to the VM, and I miss out on various features, for example search, find and replace, unit testing on file save etc.

I found a solution to mount a docker machine NFS filesystem which could potentially solve the problem? I haven't tried it yet.

https://thepracticalsysadmin.com/how-to-fix-docker-shared-folder-performance-issues/

I have been trying to use the linux subsystem on windows but it's still in beta and many things still don't work very well - but it could be a good solution in the future.

@nickjj I really liked your 'Unity Mode' set up but I was dissapointed to find that it's not supported any more wont work with ubunut 16.04. If you find a good long term solution I'd love to hear about it.

rm-bergmann commented Oct 15, 2017

I stumbled accross this interesting thread as I am looking for a good solution for my dev environment. I use (and will always use) windows with an ubunutu VM. I am still very new to docker. I have always used VM's and vagrant and always had performance problems using a shared directory so I have never used it, and I keep my project files on the linux file system.

The only disadvantage of this for me is my IDE (installed on windows) connects remotely to the VM, and I miss out on various features, for example search, find and replace, unit testing on file save etc.

I found a solution to mount a docker machine NFS filesystem which could potentially solve the problem? I haven't tried it yet.

https://thepracticalsysadmin.com/how-to-fix-docker-shared-folder-performance-issues/

I have been trying to use the linux subsystem on windows but it's still in beta and many things still don't work very well - but it could be a good solution in the future.

@nickjj I really liked your 'Unity Mode' set up but I was dissapointed to find that it's not supported any more wont work with ubunut 16.04. If you find a good long term solution I'd love to hear about it.

@nickjj

This comment has been minimized.

Show comment
Hide comment
@nickjj

nickjj Oct 15, 2017

@rm-bergmann On the bright side, your services will likely end up running within Docker, so getting the latest package versions for things like Postgres or nginx is easy. Using 14.x isn't as bad as it seems.

But I will say this. I spent all of yesterday testing a bunch of different things, including installing hyper-v on my box.

Docker for Windows + WSL + X server combo will render that same Rails app in the above video in about 200ms instead of 75ms which to me is very usable, but the real problem is when assets are being changed it quickly jumps to 6s (because all of the assets need to be recompiled) where as with my old Unity set up the same thing took 2.5s.

6s vs 2.5s is a huge difference because asset/UI changes are something you may change 3-4 times a minute. Being interrupted for 5s+ every time is a lot and I think this speed limitation is mainly due to how sharing drives work with hyper-v so I'm not sure if Docker for Windows can really be sped up that much? Hopefully I'm wrong!

Until then, I think I'm going to pass on it and explore running Docker straight up in a VM like I've always been doing but use hyper-v manually. This way I can copy in files directly to the VM and install other packages to run X server driven apps, etc.. I am pretty confident this will work for the future, and hyper-v could always be swapped out with vmware player if you're not running Windows 10 pro and since Unity mode is no longer in play, you could use any Linux distro / version you want.

nickjj commented Oct 15, 2017

@rm-bergmann On the bright side, your services will likely end up running within Docker, so getting the latest package versions for things like Postgres or nginx is easy. Using 14.x isn't as bad as it seems.

But I will say this. I spent all of yesterday testing a bunch of different things, including installing hyper-v on my box.

Docker for Windows + WSL + X server combo will render that same Rails app in the above video in about 200ms instead of 75ms which to me is very usable, but the real problem is when assets are being changed it quickly jumps to 6s (because all of the assets need to be recompiled) where as with my old Unity set up the same thing took 2.5s.

6s vs 2.5s is a huge difference because asset/UI changes are something you may change 3-4 times a minute. Being interrupted for 5s+ every time is a lot and I think this speed limitation is mainly due to how sharing drives work with hyper-v so I'm not sure if Docker for Windows can really be sped up that much? Hopefully I'm wrong!

Until then, I think I'm going to pass on it and explore running Docker straight up in a VM like I've always been doing but use hyper-v manually. This way I can copy in files directly to the VM and install other packages to run X server driven apps, etc.. I am pretty confident this will work for the future, and hyper-v could always be swapped out with vmware player if you're not running Windows 10 pro and since Unity mode is no longer in play, you could use any Linux distro / version you want.

@frutality

This comment has been minimized.

Show comment
Hide comment
@frutality

frutality Oct 25, 2017

Guys, what do you think about implementing NFS or that's impossible? I am using vagrant with virtualbox provider for several years, and yes, shared folders there are slow too. Also vagrant docs says NFS folders do not work on Windows hosts. Vagrant will ignore your request for NFS synced folders on Windows. but this is not true, thanks to https://github.com/winnfsd/vagrant-winnfsd

I mean, it just works without complex configs, dependencies etc. Install and go. Maybe it can be implemented in docker too?

Just for example, with default shared folder I had ~500ms response time at Laravel app. With NFS - ~100 ms. With Docker I have ~300 ms, which is better than virtualbox of course, but could be much better.

I am trying to forget about vagrant and using only docker. It is indeed usable even with ~300ms response time, but it would be great if we can get not only similar containers at dev and production environments, but also similar perfomance.

frutality commented Oct 25, 2017

Guys, what do you think about implementing NFS or that's impossible? I am using vagrant with virtualbox provider for several years, and yes, shared folders there are slow too. Also vagrant docs says NFS folders do not work on Windows hosts. Vagrant will ignore your request for NFS synced folders on Windows. but this is not true, thanks to https://github.com/winnfsd/vagrant-winnfsd

I mean, it just works without complex configs, dependencies etc. Install and go. Maybe it can be implemented in docker too?

Just for example, with default shared folder I had ~500ms response time at Laravel app. With NFS - ~100 ms. With Docker I have ~300 ms, which is better than virtualbox of course, but could be much better.

I am trying to forget about vagrant and using only docker. It is indeed usable even with ~300ms response time, but it would be great if we can get not only similar containers at dev and production environments, but also similar perfomance.

@nddipiazza

This comment has been minimized.

Show comment
Hide comment
@nddipiazza

nddipiazza Oct 27, 2017

i have a gradle build that only works in Linux. So windows PC's could still build the software... trying to use docker container to run the gradle build using volume share. previously about 8 months ago it didn't even work at all. it finally started working at least with one of the later version of docker... but it still is too slow for daily use.

Is anti-virus possibly partially to blame? I excluded the shared folder location from the virus scanner. My disk usage sits at 100% while the gradle build is going and it's just terrible slow. Same build using virtualbox is pretty good speed. Comparable to ubuntu native machine

any tips on how to get Windows + Shared volume to go faster? Instead of complaining about it i was hoping to hear more useful tips how to get the most speed possible out of it.

nddipiazza commented Oct 27, 2017

i have a gradle build that only works in Linux. So windows PC's could still build the software... trying to use docker container to run the gradle build using volume share. previously about 8 months ago it didn't even work at all. it finally started working at least with one of the later version of docker... but it still is too slow for daily use.

Is anti-virus possibly partially to blame? I excluded the shared folder location from the virus scanner. My disk usage sits at 100% while the gradle build is going and it's just terrible slow. Same build using virtualbox is pretty good speed. Comparable to ubuntu native machine

any tips on how to get Windows + Shared volume to go faster? Instead of complaining about it i was hoping to hear more useful tips how to get the most speed possible out of it.

@barat

This comment has been minimized.

Show comment
Hide comment
@barat

barat Nov 7, 2017

@nddipiazza you can try docker-sync (it should work with windows) ... but it's still workaround/hack. Docker for Windows/Mac is quite long with us and devs still didn't fixed this huge issue. I'm just wondering if maybe something new will pop out and detronize docker by working ootb on any OS. If such thing will happen - I'll just switch. I understand that something may be hard, but this issue is like a Year old !

barat commented Nov 7, 2017

@nddipiazza you can try docker-sync (it should work with windows) ... but it's still workaround/hack. Docker for Windows/Mac is quite long with us and devs still didn't fixed this huge issue. I'm just wondering if maybe something new will pop out and detronize docker by working ootb on any OS. If such thing will happen - I'll just switch. I understand that something may be hard, but this issue is like a Year old !

@nddipiazza

This comment has been minimized.

Show comment
Hide comment
@nddipiazza

nddipiazza Nov 7, 2017

i just think it's great for some simple usages and non-performance bound stuff. but for daily development workstation it will just make everything very painful.

nddipiazza commented Nov 7, 2017

i just think it's great for some simple usages and non-performance bound stuff. but for daily development workstation it will just make everything very painful.

@janhartigan

This comment has been minimized.

Show comment
Hide comment
@janhartigan

janhartigan Nov 19, 2017

Another update from me: In the past week, I set up a fairly complex compose environment (like ~15 shared volumes and ~12 containers) on two separate Windows machines.

The first one was the same crappy old machine I initially had this problem on, with the only difference being a brand new SSD. It works perfectly fine (pages load with no delay). Our builds are dog slow, but that's no different than running it directly from Windows...i.e. the problem is not Docker, but the CPU and memory.

I even set it up on a relatively new laptop with a pretty good (but not especially great) i7-7700HQ, an SSD, and ddr4 ~2600. None of the problems here are surfacing.

I've now built 4 independent machines with roughly these specs and I have had no problems with shared volumes:

Again...not saying you guys aren't having problems, but just trying to dispel the notion some here are proposing: that shared volumes on Docker for Windows are completely unusable in all environments. It works perfectly for me now in 3 separate Windows builds, but all of them have SSDs. Only 2 of them have respectable memory and CPU.

janhartigan commented Nov 19, 2017

Another update from me: In the past week, I set up a fairly complex compose environment (like ~15 shared volumes and ~12 containers) on two separate Windows machines.

The first one was the same crappy old machine I initially had this problem on, with the only difference being a brand new SSD. It works perfectly fine (pages load with no delay). Our builds are dog slow, but that's no different than running it directly from Windows...i.e. the problem is not Docker, but the CPU and memory.

I even set it up on a relatively new laptop with a pretty good (but not especially great) i7-7700HQ, an SSD, and ddr4 ~2600. None of the problems here are surfacing.

I've now built 4 independent machines with roughly these specs and I have had no problems with shared volumes:

Again...not saying you guys aren't having problems, but just trying to dispel the notion some here are proposing: that shared volumes on Docker for Windows are completely unusable in all environments. It works perfectly for me now in 3 separate Windows builds, but all of them have SSDs. Only 2 of them have respectable memory and CPU.

@er1z

This comment has been minimized.

Show comment
Hide comment
@er1z

er1z Nov 20, 2017

@janhartigan — although using SSDs I still can notice benefits from using a native filesystem comparing to CIFS-based one (which is being used by Dokcer for Windows for data binding). Symfony project, dev mode: 0.5s vs 20s.

er1z commented Nov 20, 2017

@janhartigan — although using SSDs I still can notice benefits from using a native filesystem comparing to CIFS-based one (which is being used by Dokcer for Windows for data binding). Symfony project, dev mode: 0.5s vs 20s.

@Yivan

This comment has been minimized.

Show comment
Hide comment
@Yivan

Yivan Feb 13, 2018

Same here, we done extending benchmarks and Docker for Win is just a VM with SMB making it slow like SMB ; )
We get far better performance using NFS for sharing but seems there is a bug preventing using NFS : (( (please see #1241)
So for now the only good alternative is Docker Toolbox + NFS.

I hope we could manage to mount NFS on Docker For Win so we get the best (simple install ore easier than Docker Toolbox) and NFS share fore the speed!

To give values, a symfony 3 apps (with /cache on the container at least):

  • Homepage: 1 sec (SMB), 230 ms (NFS)
  • Ajax request: 900ms (SMB), 130ms (NFS)
    NFS provide very very good experience on ajax GUI development for sure : ))
    SMB seems to have a very long transaction delay at the start...

Yivan commented Feb 13, 2018

Same here, we done extending benchmarks and Docker for Win is just a VM with SMB making it slow like SMB ; )
We get far better performance using NFS for sharing but seems there is a bug preventing using NFS : (( (please see #1241)
So for now the only good alternative is Docker Toolbox + NFS.

I hope we could manage to mount NFS on Docker For Win so we get the best (simple install ore easier than Docker Toolbox) and NFS share fore the speed!

To give values, a symfony 3 apps (with /cache on the container at least):

  • Homepage: 1 sec (SMB), 230 ms (NFS)
  • Ajax request: 900ms (SMB), 130ms (NFS)
    NFS provide very very good experience on ajax GUI development for sure : ))
    SMB seems to have a very long transaction delay at the start...
@sav-valerio

This comment has been minimized.

Show comment
Hide comment
@sav-valerio

sav-valerio Mar 12, 2018

Any updates? At least some 'tested' workarounds.
This issue really makes Docker for Windows unsuitable for web development.

EDIT: I just found docker-sync (https://github.com/EugenMayer/docker-sync).
If you are on Windows I just updated the documentation, so you should not have any problems with the installation.

As a workaround until Docker finally fixes this, using docker-sync makes everything a lot more usable.

sav-valerio commented Mar 12, 2018

Any updates? At least some 'tested' workarounds.
This issue really makes Docker for Windows unsuitable for web development.

EDIT: I just found docker-sync (https://github.com/EugenMayer/docker-sync).
If you are on Windows I just updated the documentation, so you should not have any problems with the installation.

As a workaround until Docker finally fixes this, using docker-sync makes everything a lot more usable.

@georaldc

This comment has been minimized.

Show comment
Hide comment
@georaldc

georaldc Mar 23, 2018

@sav-valerio I tried following your instructions and everything went smoothly until the Unison step. The make UISTYLE=text step fails with a bunch of errors for me

make -C src UISTYLE=text
make[1]: Entering directory  '/path/to/unison-2.51.2/src'
UISTYLE = text
Building for Unix
NATIVE = true
THREADS = false
STATIC = false
OSTYPE =
OSARCH = Linux
ocamlopt: ubase/rx.mli ---> ubase/rx.cmi
ocamlopt -g -unsafe-string -I lwt -I ubase -I system -I fsmonitor -I fsmonitor/linux -I fsmonitor/windows -I system/generic -I lwt/generic -c /path/to/unison-2.51.2/src/ubase/rx.mli
make[1]: ocamlopt: Command not found
Makefile.OCaml:412: recipe for target 'ubase/rx.cmi' failed
make[1]: *** [ubase/rx.cmi] Error 127
make[1]: Leaving directory '/path/to/unison-2.51.2/src'
Makefile:6: recipe for target 'text' failed
make: *** [text] Error 2

georaldc commented Mar 23, 2018

@sav-valerio I tried following your instructions and everything went smoothly until the Unison step. The make UISTYLE=text step fails with a bunch of errors for me

make -C src UISTYLE=text
make[1]: Entering directory  '/path/to/unison-2.51.2/src'
UISTYLE = text
Building for Unix
NATIVE = true
THREADS = false
STATIC = false
OSTYPE =
OSARCH = Linux
ocamlopt: ubase/rx.mli ---> ubase/rx.cmi
ocamlopt -g -unsafe-string -I lwt -I ubase -I system -I fsmonitor -I fsmonitor/linux -I fsmonitor/windows -I system/generic -I lwt/generic -c /path/to/unison-2.51.2/src/ubase/rx.mli
make[1]: ocamlopt: Command not found
Makefile.OCaml:412: recipe for target 'ubase/rx.cmi' failed
make[1]: *** [ubase/rx.cmi] Error 127
make[1]: Leaving directory '/path/to/unison-2.51.2/src'
Makefile:6: recipe for target 'text' failed
make: *** [text] Error 2
@Perni1984

This comment has been minimized.

Show comment
Hide comment
@Perni1984

Perni1984 Mar 23, 2018

Looking at https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containers#bind-mounts it seems that the new LCOW (Linux Container on Windows) are using NTFS directly for bind mounts, which should result in faster performance (although there are still some issues with popular web development packages because the POSIX implementation for the bind mount is not finished yet).

Did anyone test the performance of LCOW for web development?

Perni1984 commented Mar 23, 2018

Looking at https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containers#bind-mounts it seems that the new LCOW (Linux Container on Windows) are using NTFS directly for bind mounts, which should result in faster performance (although there are still some issues with popular web development packages because the POSIX implementation for the bind mount is not finished yet).

Did anyone test the performance of LCOW for web development?

@sav-valerio

This comment has been minimized.

Show comment
Hide comment
@sav-valerio

sav-valerio Mar 23, 2018

@georaldc
yikes, I forgot.
Run make opt after make world in the OCaml source folder, then continue following the OCaml related steps in the section.

sav-valerio commented Mar 23, 2018

@georaldc
yikes, I forgot.
Run make opt after make world in the OCaml source folder, then continue following the OCaml related steps in the section.

@tonyaxo

This comment has been minimized.

Show comment
Hide comment
@tonyaxo

tonyaxo Apr 5, 2018

I solved this problem.
Before it was:

time dd if=/dev/zero of=test.dat bs=1024 count=100000
100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 10.9452 s, 9.4 MB/s

real    0m10.952s
user    0m0.150s
sys     0m1.870s

On SSD!

My solution use Windows Subsystem for Linux

  1. Install Docker for windows

  2. Install WSL and Ubuntu

    ! Dont unpack ubuntu dist in system C: use D etc

  3. Install docker to WSL: take installation instruction
    there and configuration like there

    ! Dont use sudo mkdir /c && sudo mount --bind /mnt/c /c, you shoud do it like sudo ln -s /mnt/c /c

  4. Run docker under WSL

Result:

100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 0.10863 s, 943 MB/s

real    0m0.117s
user    0m0.010s
sys     0m0.090s

tonyaxo commented Apr 5, 2018

I solved this problem.
Before it was:

time dd if=/dev/zero of=test.dat bs=1024 count=100000
100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 10.9452 s, 9.4 MB/s

real    0m10.952s
user    0m0.150s
sys     0m1.870s

On SSD!

My solution use Windows Subsystem for Linux

  1. Install Docker for windows

  2. Install WSL and Ubuntu

    ! Dont unpack ubuntu dist in system C: use D etc

  3. Install docker to WSL: take installation instruction
    there and configuration like there

    ! Dont use sudo mkdir /c && sudo mount --bind /mnt/c /c, you shoud do it like sudo ln -s /mnt/c /c

  4. Run docker under WSL

Result:

100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 0.10863 s, 943 MB/s

real    0m0.117s
user    0m0.010s
sys     0m0.090s
@Perni1984

This comment has been minimized.

Show comment
Hide comment
@Perni1984

Perni1984 Apr 6, 2018

@tonyaxo Why would you need Docker for windows for that, if you install/run docker under wsl?

Perni1984 commented Apr 6, 2018

@tonyaxo Why would you need Docker for windows for that, if you install/run docker under wsl?

@georaldc

This comment has been minimized.

Show comment
Hide comment
@georaldc

georaldc Apr 6, 2018

@Perni1984 because the docker daemon doesn’t run under wsl (unless this has changed recently)?

georaldc commented Apr 6, 2018

@Perni1984 because the docker daemon doesn’t run under wsl (unless this has changed recently)?

@tonyaxo

This comment has been minimized.

Show comment
Hide comment
@tonyaxo

tonyaxo Apr 6, 2018

@Perni1984

@georaldc
because the docker daemon doesn’t run under wsl (unless this has changed recently)?

I didnt find any other way to run it.

tonyaxo commented Apr 6, 2018

@Perni1984

@georaldc
because the docker daemon doesn’t run under wsl (unless this has changed recently)?

I didnt find any other way to run it.

@tonyaxo

This comment has been minimized.

Show comment
Hide comment
@vasekboch

This comment has been minimized.

Show comment
Hide comment
@vasekboch

vasekboch Apr 6, 2018

You cannot install Docker Engine under WSL. There is not enough API implemented to support this. So the background task support won't help. The solution is LCOW, that is currently in progress of development.

vasekboch commented Apr 6, 2018

You cannot install Docker Engine under WSL. There is not enough API implemented to support this. So the background task support won't help. The solution is LCOW, that is currently in progress of development.

@Perni1984

This comment has been minimized.

Show comment
Hide comment
@Perni1984

Perni1984 Apr 6, 2018

@vasekboch Ok, I already research a bit on LCOW but didn't find any performane tests etc. - did anybody test this?

Relevant github issue: moby/moby#33850
MS documentation: https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containers

Perni1984 commented Apr 6, 2018

@vasekboch Ok, I already research a bit on LCOW but didn't find any performane tests etc. - did anybody test this?

Relevant github issue: moby/moby#33850
MS documentation: https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containers

@Yivan

This comment has been minimized.

Show comment
Hide comment
@Yivan

Yivan Apr 6, 2018

Hello,

I tested LCOW and it wasn't faster (actually if ifnd it was even slower...).

@tonyaxo How can you improve performance of sharing files (CIFS or NFS) between containers and windows host using WSL, as the docker daemon is always the Docker for Windows one ? WSL can only be used to run cli command transmitted to the docker daemon, that's all.

I confirm that WSL is not on the way and not ready to support a docker full install (with daemon). Problem is docker use linux subspace/namespace and some advanced linux kernel functionnality which are for now not available in the windows linux subsytem kernel.

Yivan commented Apr 6, 2018

Hello,

I tested LCOW and it wasn't faster (actually if ifnd it was even slower...).

@tonyaxo How can you improve performance of sharing files (CIFS or NFS) between containers and windows host using WSL, as the docker daemon is always the Docker for Windows one ? WSL can only be used to run cli command transmitted to the docker daemon, that's all.

I confirm that WSL is not on the way and not ready to support a docker full install (with daemon). Problem is docker use linux subspace/namespace and some advanced linux kernel functionnality which are for now not available in the windows linux subsytem kernel.

@Perni1984

This comment has been minimized.

Show comment
Hide comment
@Perni1984

Perni1984 Apr 6, 2018

@Yivan do you really need to use CIFS or NFS to share files with the host when using LCOW? As far as I understood this correctly NTFS should be used directly when bind mounts are used (although the implementation is not far enough to be used in production)

Perni1984 commented Apr 6, 2018

@Yivan do you really need to use CIFS or NFS to share files with the host when using LCOW? As far as I understood this correctly NTFS should be used directly when bind mounts are used (although the implementation is not far enough to be used in production)

@Yivan

This comment has been minimized.

Show comment
Hide comment
@Yivan

Yivan Apr 6, 2018

@Perni1984 No you don't need to set manually a sharing server (cifs/nfs). From what i remember (it was around 2 month ago), LCOW linux container doesn't access directly to host NTFS file system (windows container have direct access yes). So behind the scene there seems to be some file sharing even in LCOW.
Maybe this has changed in more recent version and now LCOW with linux container provide fast direct access to the host files.

Here is the issue i opened, it has some speed test inside:
linuxkit/lcow#7

Yivan commented Apr 6, 2018

@Perni1984 No you don't need to set manually a sharing server (cifs/nfs). From what i remember (it was around 2 month ago), LCOW linux container doesn't access directly to host NTFS file system (windows container have direct access yes). So behind the scene there seems to be some file sharing even in LCOW.
Maybe this has changed in more recent version and now LCOW with linux container provide fast direct access to the host files.

Here is the issue i opened, it has some speed test inside:
linuxkit/lcow#7

@tonyaxo

This comment has been minimized.

Show comment
Hide comment
@tonyaxo

tonyaxo Apr 6, 2018

@Yivan

@tonyaxo How can you improve performance of sharing files (CIFS or NFS) between containers and windows host using WSL, as the docker daemon is always the Docker for Windows one ? WSL can only be used to run cli command transmitted to the docker daemon, that's all.

I dont know how it works. But wsl docker cli faster widows docker cli 660 times. It is a fact.
I think wsl docker transport files to windows docker demon.
Why dont you try it and report about you result?

tonyaxo commented Apr 6, 2018

@Yivan

@tonyaxo How can you improve performance of sharing files (CIFS or NFS) between containers and windows host using WSL, as the docker daemon is always the Docker for Windows one ? WSL can only be used to run cli command transmitted to the docker daemon, that's all.

I dont know how it works. But wsl docker cli faster widows docker cli 660 times. It is a fact.
I think wsl docker transport files to windows docker demon.
Why dont you try it and report about you result?

@Yivan

This comment has been minimized.

Show comment
Hide comment
@Yivan

Yivan Apr 6, 2018

@tonyaxo I tried it using the two common ways:

  • installing docker (it is better to install same version than docker for Windos) on wsl too use docker cli directly inside wsl (and disabling TLS security breach) => this is the way you do ti
  • creating a wrapper script to call docker cli windows binary of docker for windows (this second is the best way i think so it doesn"t involve disabling TLS as you call directly the same docker cli binary than those on the CMD/Powershell and you got the same docker version on each side)

Either way, what do you mean by faster, which test did you done, could you provide details please ? You have to test the speed from inside the container on a binded directory, not inside the WSL (for sure it is fast, it use DrvFs which map windows directory inside WSL. But docker daemon don't know of WSL and so don't use the WSL filesystem).
Because WSL is just used to push command to the docker daemon of docker for windows. So ti changes nothing for container using wsl or not.

I tried it, result are here: linuxkit/lcow#7 (see my post just above please)

Yivan commented Apr 6, 2018

@tonyaxo I tried it using the two common ways:

  • installing docker (it is better to install same version than docker for Windos) on wsl too use docker cli directly inside wsl (and disabling TLS security breach) => this is the way you do ti
  • creating a wrapper script to call docker cli windows binary of docker for windows (this second is the best way i think so it doesn"t involve disabling TLS as you call directly the same docker cli binary than those on the CMD/Powershell and you got the same docker version on each side)

Either way, what do you mean by faster, which test did you done, could you provide details please ? You have to test the speed from inside the container on a binded directory, not inside the WSL (for sure it is fast, it use DrvFs which map windows directory inside WSL. But docker daemon don't know of WSL and so don't use the WSL filesystem).
Because WSL is just used to push command to the docker daemon of docker for windows. So ti changes nothing for container using wsl or not.

I tried it, result are here: linuxkit/lcow#7 (see my post just above please)

@borekb borekb referenced this issue May 23, 2018

Merged

Dev setup updates – spring 2018 #1329

19 of 19 tasks complete
@Perni1984

This comment has been minimized.

Show comment
Hide comment
@Perni1984

Perni1984 Jun 16, 2018

@Perni1984 No you don't need to set manually a sharing server (cifs/nfs). From what i remember (it was around 2 month ago), LCOW linux container doesn't access directly to host NTFS file system (windows container have direct access yes). So behind the scene there seems to be some file sharing even in LCOW.
Maybe this has changed in more recent version and now LCOW with linux container provide fast direct access to the host files.

@Yivan
I found a corresponding issue that is confirming LCOW is using the 9p2000 protocol. I read some forum entries about better performance compared to CIFS/SMB. Although the windows implementation of the 9p2000 protocol is still not supporting chmod / uid, gid settings which is the underlying issue for making bind mounts not working correctly for most of the containers.

see #2042 (comment)

My research shows that there is a protocol extension called 9p2000.u which would enable to implement a chmod /uid,gid settings, and I guess that is what will be done - otherwise LCOW will not be really usable for a lot of applications in the containers.

Unfortunately I don't have found any performance results worth sharing for 9p2000 or LCOW.

BTW does anybody know how to ping/reach the Microsoft Developers that are doing the 9p2000 development on the windows side?

Perni1984 commented Jun 16, 2018

@Perni1984 No you don't need to set manually a sharing server (cifs/nfs). From what i remember (it was around 2 month ago), LCOW linux container doesn't access directly to host NTFS file system (windows container have direct access yes). So behind the scene there seems to be some file sharing even in LCOW.
Maybe this has changed in more recent version and now LCOW with linux container provide fast direct access to the host files.

@Yivan
I found a corresponding issue that is confirming LCOW is using the 9p2000 protocol. I read some forum entries about better performance compared to CIFS/SMB. Although the windows implementation of the 9p2000 protocol is still not supporting chmod / uid, gid settings which is the underlying issue for making bind mounts not working correctly for most of the containers.

see #2042 (comment)

My research shows that there is a protocol extension called 9p2000.u which would enable to implement a chmod /uid,gid settings, and I guess that is what will be done - otherwise LCOW will not be really usable for a lot of applications in the containers.

Unfortunately I don't have found any performance results worth sharing for 9p2000 or LCOW.

BTW does anybody know how to ping/reach the Microsoft Developers that are doing the 9p2000 development on the windows side?

@trickreich

This comment has been minimized.

Show comment
Hide comment
@trickreich

trickreich Aug 5, 2018

So the usage of Docker for web development is only really usable with Linux?

trickreich commented Aug 5, 2018

So the usage of Docker for web development is only really usable with Linux?

@er1z

This comment has been minimized.

Show comment
Hide comment
@er1z

er1z commented Aug 7, 2018

@trickreich Indeed.

@raupie

This comment has been minimized.

Show comment
Hide comment
@raupie

raupie Aug 7, 2018

I've used WSL + Docker for web development on Windows for building WordPress based sites. That works fine or basic html/css framework stuff. However when you get into trying to use a heavy php framework or node that's when things fall apart. The I/O performance for reading the node_modules or vendor folder takes way too long and everything grinds to a hault. I've reformated my primary PC to Linux to take advantage of docker for my web dev needs. It's had pros and cons.

raupie commented Aug 7, 2018

I've used WSL + Docker for web development on Windows for building WordPress based sites. That works fine or basic html/css framework stuff. However when you get into trying to use a heavy php framework or node that's when things fall apart. The I/O performance for reading the node_modules or vendor folder takes way too long and everything grinds to a hault. I've reformated my primary PC to Linux to take advantage of docker for my web dev needs. It's had pros and cons.

@trickreich

This comment has been minimized.

Show comment
Hide comment
@trickreich

trickreich Aug 7, 2018

@raupie When I'm developing just small things like html/css, then I don't need Docker for that ;)
So you are sure, I'm talking about developing Symfony applications.
For that I've switched from OSX to Linux at the beginning of the year.
Docker really works great for that! But I have also some downsides with the OS at all (Mixed DPI, etc.).

trickreich commented Aug 7, 2018

@raupie When I'm developing just small things like html/css, then I don't need Docker for that ;)
So you are sure, I'm talking about developing Symfony applications.
For that I've switched from OSX to Linux at the beginning of the year.
Docker really works great for that! But I have also some downsides with the OS at all (Mixed DPI, etc.).

@er1z

This comment has been minimized.

Show comment
Hide comment
@er1z

er1z Aug 7, 2018

Reloading caches under Symfony & shared folders (which occurs every request in dev env) is too long. Nope, it's pointless.

er1z commented Aug 7, 2018

Reloading caches under Symfony & shared folders (which occurs every request in dev env) is too long. Nope, it's pointless.

@raupie

This comment has been minimized.

Show comment
Hide comment
@raupie

raupie Aug 7, 2018

@trickreich. Oops now that I read that, that's pretty comical. I guess what I meant was if I need php/Apache it worked pretty well. Yeah, my work is a symfony shop (ezplatform CMS) and as @er1z said it's pointless. There are tricks you can do such as changing the cache dir to stay inside the container and not in the shared volume. There's also a git repo called docker-sync which uses unison to sync the files/folders between local and docker container. So you don't sync the vendor folder in a shared volume and you sync the vendor dir whenever you update or install composer. That's a headache but does work.

raupie commented Aug 7, 2018

@trickreich. Oops now that I read that, that's pretty comical. I guess what I meant was if I need php/Apache it worked pretty well. Yeah, my work is a symfony shop (ezplatform CMS) and as @er1z said it's pointless. There are tricks you can do such as changing the cache dir to stay inside the container and not in the shared volume. There's also a git repo called docker-sync which uses unison to sync the files/folders between local and docker container. So you don't sync the vendor folder in a shared volume and you sync the vendor dir whenever you update or install composer. That's a headache but does work.

@trickreich

This comment has been minimized.

Show comment
Hide comment
@trickreich

trickreich Aug 7, 2018

But the fastest options is still Linux, that's the point :)

trickreich commented Aug 7, 2018

But the fastest options is still Linux, that's the point :)

@raupie

This comment has been minimized.

Show comment
Hide comment
@raupie

raupie Aug 7, 2018

100%, that's why I switch to Linux. It just worked as expected. It sucks because WSL is soooo close to being useful from a web development workflow. My work IT won't reformat our windows workstations so we have to use a remote vsphere vm to develop in which has drawbacks. Hate the idea of developing in a local virtual machine as well. Managing two machines is annoying.

raupie commented Aug 7, 2018

100%, that's why I switch to Linux. It just worked as expected. It sucks because WSL is soooo close to being useful from a web development workflow. My work IT won't reformat our windows workstations so we have to use a remote vsphere vm to develop in which has drawbacks. Hate the idea of developing in a local virtual machine as well. Managing two machines is annoying.

@trickreich

This comment has been minimized.

Show comment
Hide comment
@trickreich

trickreich Aug 7, 2018

Yes.. same here!

I thought WSL could be maybe another option until i read this article: https://www.phoronix.com/scan.php?page=article&item=windows10-wsl-docker&num=2

trickreich commented Aug 7, 2018

Yes.. same here!

I thought WSL could be maybe another option until i read this article: https://www.phoronix.com/scan.php?page=article&item=windows10-wsl-docker&num=2

@luckydonald

This comment has been minimized.

Show comment
Hide comment
@luckydonald

luckydonald Aug 7, 2018

It's usable from macOS.
There are less differences between mac and linux, so it runs a lot better then windows at least, as it doesn't have to fake so much (file permissions, cAsEiNsEnSiTivE file systems, ...)
But yeah, on window's it's a deal breaker, I'm the only mac in the company therefore we can't use it.

luckydonald commented Aug 7, 2018

It's usable from macOS.
There are less differences between mac and linux, so it runs a lot better then windows at least, as it doesn't have to fake so much (file permissions, cAsEiNsEnSiTivE file systems, ...)
But yeah, on window's it's a deal breaker, I'm the only mac in the company therefore we can't use it.

@trickreich

This comment has been minimized.

Show comment
Hide comment
@trickreich

trickreich Aug 7, 2018

@luckydonald I've switched from OSX to Linux because it's not usable! It's also terrible slow.
docker/for-mac#77

trickreich commented Aug 7, 2018

@luckydonald I've switched from OSX to Linux because it's not usable! It's also terrible slow.
docker/for-mac#77

@BlueBeN82

This comment has been minimized.

Show comment
Hide comment
@BlueBeN82

BlueBeN82 Aug 7, 2018

Did someone try to mount the volume as delegated or cached? https://docs.docker.com/docker-for-mac/osxfs-caching/

BlueBeN82 commented Aug 7, 2018

Did someone try to mount the volume as delegated or cached? https://docs.docker.com/docker-for-mac/osxfs-caching/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment