-
Notifications
You must be signed in to change notification settings - Fork 118
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
Underlying kernel does not support BTRFS #388
Comments
Could you direct us to something about why |
Hi @dsheets I'm using concourse ci and they create a scratch disk using btrfs when starting a worker container, if not it falls back to tmpfs which is sloow. However, given btrfs is in the mainline kernel, and hailed as the future filesystem, would it not make sense to add it to the underlying image? Even a way to bake a custom image with a custom kernel would suffice... What are your thoughts? |
I'm curious about why Concourse CI requires |
not using concourse here, but adding another reason to the discussion, |
@dsheets Its hazy. Basically, when you run a concourse worker in docker, it runs tasks in docker containers in the worker, so it does docker in docker. When it does this, it creates btrfs filesystems inside the docker container, I think it mounts them to the task containers, not sure. Anyway, if not it falls back to VFS and creates a tmpfs filesystem which is slow. Anyway, that aside, why wouldn't you want to support BTRFS? |
Related Concourse issue concourse/concourse#896 |
+1 I had to downgrade from 1.13.0 back to 1.12.x due to breaking change with btrfs affecting concourse. |
@willejs Concourse Ci does not use docker in docker, in fact it does not use docker compose to orchestrate its internal containers. It uses cloudfoundry/garden. I'm planning to use docker in docker to run multiple containers in one concourse task (which can only use one garden container) to be able to do integration tests using various dependencies like selenium, mysql, nginx each in its own container using docker-compose like in my dev/stage/prod environments. |
+1 I also had to downgrade to docker-toolbox because of this issue. I don't know if docker/for-mac should support btrfs or concourse should use other storage drivers. |
@dsheets Concourse uses |
@dsheets sorry to ping on this one, but it's forcing me to stay on 1.12.x and that's quickly going to become a pain point as pressure to upgrade increases is there an official stance on why btrfs support is gone? I'm surprised considering how glowingly positive the official docker article and release notes are for it |
@doubledgedboard As far as I know, Docker for Mac has never supported We haven't enabled |
@dsheets so what is the change that caused concourse/concourse#896 to break from 1.12.x to 1.13.x? The concourse team is saying it's a btrfs issue with docker for mac. |
@eedwardsdisco I don't know what change caused the regression. Could you please post a step-by-step reproduction with any required configuration files here so we can investigate or bisect the issue? We are not familiar with Concourse so a sequence of steps to go from a fresh macOS install to either success (under 1.12.x) or failure (under 1.13.x) would greatly speed our work. Thanks! |
@dsheets Try this docker-compose in docker/for-mac:
Use this docker-compose script to bring up concourse in docker for mac and then try to run this (or any) simple pipeline.
|
@dsheets you will also need the fly-cli to login and register the pipeline |
@berisberis Ok, I run
I'm not sure what to do with your second file. Where do I save it and with what file name? Do I need to install software on the host? Which software exactly (version)? How do I run the pipeline? |
@dsheets yo also need a folder |
@dsheets also... for the second file you can name it whatever you want .yml |
When you have the fly-cli run this to login: |
@berisberis I have created |
Hey David, Here's some explicit steps (from http://concourse.ci/docker-repository.html) Create docker-compose.yml (uses latest concourse binary)
create keys
create a host entry in /private/etc/hosts pointing 'concourse' to your current local interface IP (not loopback!)
export env var mapping external host to your custom local dns
start the concourse stack (web\worker\coordinator)
browse to the url and download the fly cli from the link on the page
use the fly cli to create your login target (yes the password literally is 'changeme' as per above)
create navi-pipeline.yml pipeline file
upload pipeline to concourse
observe automatic (every minute) invocation of pipeline at the url
destroy the stack (e.g. to then switch underlying docker versions...)
repeat as needed |
@eedwardsdisco Thanks! I did all of that under 1.13.1 and 1.12.6 and, as far as I could tell, the behavior was the same. The pipeline shows "pending" pulsing, "starting" pulsing, and eventually "failed" highlighted in the web UI. The logs of the worker show:
which contains the error:
from
I don't see a difference between running your reproduction on 1.12.6 and 1.13.1 so I don't think there's been a regression in Docker for Mac or this test case does not show it. I see {"timestamp":"1488379673.105854750","source":"worker","message":"worker.baggageclaim.falling-back-on-naive-driver","log_level":2,"data":{"error":"exit status 32","session":"2"}} in the logs but no further mention of the driver. Later, I see {"timestamp":"1488379673.116163015","source":"worker","message":"worker.beacon.restarting","log_level":2,"data":{"error":"failed to dial: failed to connect to TSA: dial tcp 172.17.0.3:2222: getsockopt: connection refused","session":"3"}}{"timestamp":"1488379673.116110563","source":"baggageclaim","message":"baggageclaim.listening","log_level":1,"data":{"addr":"127.0.0.1:7788"}} which sounds potentially fatal. Is this error expected? |
Hrm strange. I'm using 1.12.3 and it worked. I'm going to try and see if I can get a copy of 1.12.6 and see if it breaks on that. (and I'm on OSX Sierra 10.12.3)
|
Very strange. While you're seeing failure on both versions, I'm now seeing success. Tried the repro I gave you on 1.12.3 (what I was running) and it worked, but then upgraded to 1.12.6 (the version you were running) and it worked, and then finally upgraded to latest ( 17.03.0-ce-mac1) and it still worked. Rebooted, cleared my local volumes, ran again, still worked. I'm stumped but I can't complain. I'll wait for others to see what they report when running latest concourse + docker. |
I get a similar error running Windows 10 w/ Docker 17.03.1-ce, build c6d412e and using latest instructions and builds from http://concourse.ci/docker-repository.html.
|
You may have to |
@rn Thanks! |
Closed issues are locked after 30 days of inactivity. If you have found a problem that seems similar to this, please open a new issue. Send feedback to Docker Community Slack channels #docker-for-mac or #docker-for-windows. |
Expected behavior
When selecting the btrfs docker driver, it works
Actual behavior
It does not work as btrfs is not enabled in the kernel.
Information
Steps to reproduce the behavior
Possible fix
Compile the kernel with btrfs support enabled in the underlying VM for mac.
The text was updated successfully, but these errors were encountered: