Skip to content
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

Networking doesn't work with Windows containers due to disconnecting containers from networks #3252

Closed
bfirsh opened this issue Mar 31, 2016 · 34 comments

Comments

@bfirsh
Copy link

bfirsh commented Mar 31, 2016

See @taylorb-microsoft's comment here: 313c584#commitcomment-16546187

Windows doesn't support disconnecting containers from networks and isn't going to any time soon. It seems like we should get better APIs for updating aliases on containers instead of doing this which feels like hack.

This is blocking Compose working with Windows containers, I believe.

@thecloudtaylor
Copy link

Yes this will block Windows containers from working with Compose V2 as we don't support Hot Add/Remove of Network interfaces (at least for V1).

@aanand
Copy link

aanand commented Apr 1, 2016

ping @mavenugo

It'd be nice to be able to update the configuration for a container's connection to a particular network. Perhaps the /networks/:id/connect endpoint could be overloaded so that if you POST to it with the id of a container that's already connected and a new set of aliases, it updates the configuration accordingly?

@mavenugo
Copy link

mavenugo commented Apr 1, 2016

@aanand we dont support any network update operations today. And any such discussion should happen in libnetwork project (maybe : moby/libnetwork#996) so that other maintainers can weigh in.

@mavenugo
Copy link

mavenugo commented Apr 7, 2016

@bfirsh bfirsh added this to the 1.7.0 milestone Apr 7, 2016
@bfirsh
Copy link
Author

bfirsh commented Apr 7, 2016

@aanand @dnephin Will this allow us to ship a fix in time for 1.7? Will this break backwards compatibility with older versions of Docker if we remove adding the alias in Compose?

@dnephin
Copy link

dnephin commented Apr 7, 2016

I don't see any way to get this fixed for 1.7. The windows engine should support these API calls.

If the networking fix makes it into Docker 1.11, we can require API version 1.23 in Compose 1.8 using the v2 format.

@dnephin dnephin modified the milestones: 1.8.0, 1.7.0 Apr 11, 2016
@dnephin
Copy link

dnephin commented Apr 11, 2016

We came up with another plan (thanks @mavenugo for the suggestion). Instead of requiring the new API version we can check for the existence of the alias before disconnecting from the network. If the alias already exists, skip the disconnect/connect.

This will require that we set all networking config (aliases and ip addresses) during container create (we don't do that now because we re-connect later with them set). It will also mean that in the case of newer engines that set the default alias, we'll be setting the alias again for non-default networks.

@git-jiby-me
Copy link

@bfirsh i have tried latest dev build of docker compose and docker engines, but compose still fails for windows components with message "Windows does not support disconnecting a running container from a network". Is there any build that i can use where this works ?

@aanand
Copy link

aanand commented May 20, 2016

@git-jiby-me That's not good. What's your exact sequence of commands, and how complex is your docker-compose.yml? Does the same thing happen with a trivial one? e.g.

version: "2"
services:
  test:
    image: busybox
    command: top

Assuming the command that's failing is docker-compose up, could you gist the output of docker-compose --verbose up?

@git-jiby-me
Copy link

git-jiby-me commented May 20, 2016

@aanand its not complex at all, here is the one i used to test

version: "2"
networks:
  default:
    external:
      name: nat
services:
  test:
    image: stefanscherer/mongo-windows

I cannot use the sample you provided since busybox doesn't have a variant for windows, and i set network default as nat because else windows HNS complains.

Here are the sequence of commands i did and response

docker info

Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 96
Server Version: 1.12.0-dev
Storage Driver: windowsfilter
 Windows:
Logging Driver: json-file
Plugins:
 Volume: local
 Network: overlay nat null
Kernel Version: 10.0 14300 (14300.1016.amd64fre.rs1_release_svc.160428-1819)
Operating System: Windows Server 2016 Datacenter Technical Preview 5
OSType: windows
Architecture: x86_64
CPUs: 2
Total Memory: 4 GiB
Name: vagrant-windows
ID: Q2VW:IYZW:TDE4:257N:3H2N:LCB3:VOVX:6E3H:YSWO:LR5K:3XZF:Q475
Docker Root Dir: C:\ProgramData\docker
Debug Mode (client): false
Debug Mode (server): false
Username: jibyjose
Registry: https://index.docker.io/v1/
Labels:
 type=windows
Cluster Store: consul://192.168.33.10:8500
Cluster Advertise: 192.168.33.11:2376
Insecure Registries:
 127.0.0.0/8
---------------

docker-compose up

Removing test_test_1
Recreating 3ecba58929e9_test_test_1

ERROR: for test  Windows does not support disconnecting a running container from a network

docker-compose --verbose up

compose.config.config.find: Using configuration files: ./docker-compose.yml
docker.auth.auth.load_config: Found 'auths' section
docker.auth.auth.parse_auth: Found entry (registry=u'https://index.docker.io/v1/', username=u'jibyjose')
compose.cli.command.get_client: docker-compose version 1.7.0dev, build 8653028
docker-py version: 1.8.0-rc5
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1j 15 Oct 2014
compose.cli.command.get_client: Docker base_url: https://192.168.33.11:2376
compose.cli.command.get_client: Docker version: KernelVersion=10.0 14300 (14300.1016.amd64fre.rs1_release_svc.160428-1819), Os=windows, BuildTime=2016-05-16T18:35:57.514910367+00:00, ApiVersion=1.24, Version=1.12.0-dev, GitCommit=4c68381, Arch=amd64, GoVersion=go1.5.3
compose.cli.verbose_proxy.proxy_callable: docker inspect_network <- ('nat')
compose.cli.verbose_proxy.proxy_callable: docker inspect_network -> {u'Containers': {},
 u'Driver': u'nat',
 u'EnableIPv6': False,
 u'IPAM': {u'Config': [{u'Gateway': u'172.16.0.1',
                        u'Subnet': u'172.16.0.0/12'}],
           u'Driver': u'default',
           u'Options': None},
 u'Id': u'718dd18d3529765a33284a8a2a219605a8718f95e89bc0f295816fd9f4e96572',
 u'Internal': False,
 u'Labels': {},
...
compose.network.ensure: Network default declared as external. No new network will be created.
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=test', u'com.docker.compose.service=test', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 2 items)
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- (u'b8cb1c52e6189d39bc7e7626518cde56928a40e9f609594e74104170e780b440')
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {u'AppArmorProfile': u'',
 u'Args': [],
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'C:/mongodb/bin/mongod.exe'],
             u'Domainname': u'',
             u'Entrypoint': None,
             u'Env': [u'MONGO_MAJOR=3.2', u'MONGO_VERSION=3.2.6'],
             u'Hostname': u'b8cb1c52e618',
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- (u'3ecba58929e9ae1c5a1a6038a474864d85deaead8b6b060dbd13e47aaf2c2b9f')
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {u'AppArmorProfile': u'',
 u'Args': [],
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'cmd'],
             u'Domainname': u'',
             u'Entrypoint': None,
             u'Env': None,
             u'Hostname': u'3ecba58929e9',
...
compose.service.remove_duplicate_containers: Removing test_test_1
compose.cli.verbose_proxy.proxy_callable: docker stop <- (u'b8cb1c52e6189d39bc7e7626518cde56928a40e9f609594e74104170e780b440', timeout=10)
compose.cli.verbose_proxy.proxy_callable: docker stop -> None
compose.cli.verbose_proxy.proxy_callable: docker remove_container <- (u'b8cb1c52e6189d39bc7e7626518cde56928a40e9f609594e74104170e780b440')
compose.cli.verbose_proxy.proxy_callable: docker remove_container -> None
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=test', u'com.docker.compose.service=test', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 1 items)
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('stefanscherer/mongo-windows')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
 u'Author': u'[email protected]',
 u'Comment': u'',
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'C:/mongodb/bin/mongod.exe'],
             u'Domainname': u'',
             u'Entrypoint': None,
             u'Env': [u'MONGO_MAJOR=3.2', u'MONGO_VERSION=3.2.6'],
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- (u'3ecba58929e9ae1c5a1a6038a474864d85deaead8b6b060dbd13e47aaf2c2b9f')
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {u'AppArmorProfile': u'',
 u'Args': [],
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'cmd'],
             u'Domainname': u'',
             u'Entrypoint': None,
             u'Env': None,
             u'Hostname': u'3ecba58929e9',
...
compose.service._containers_have_diverged: 3ecba58929e9_3ecba58929e9_test_test_1 has diverged: 3b7fd65670a9779666cd8400233bc52267881a3d984c6c792e01d630abf83e97 != 10f8e20aaaaf47b2ae97ef2e922100fe454f2bd69f7905b78eda5e7c14a9da11
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('stefanscherer/mongo-windows')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
 u'Author': u'[email protected]',
 u'Comment': u'',
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'C:/mongodb/bin/mongod.exe'],
             u'Domainname': u'',
             u'Entrypoint': None,
             u'Env': [u'MONGO_MAJOR=3.2', u'MONGO_VERSION=3.2.6'],
...
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=False, filters={u'label': [u'com.docker.compose.project=test', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.service.recreate_container: Recreating 3ecba58929e9_3ecba58929e9_test_test_1
compose.cli.verbose_proxy.proxy_callable: docker stop <- (u'3ecba58929e9ae1c5a1a6038a474864d85deaead8b6b060dbd13e47aaf2c2b9f', timeout=10)
compose.cli.verbose_proxy.proxy_callable: docker stop -> None
compose.cli.verbose_proxy.proxy_callable: docker rename <- (u'3ecba58929e9ae1c5a1a6038a474864d85deaead8b6b060dbd13e47aaf2c2b9f', u'3ecba58929e9_3ecba58929e9_3ecba58929e9_test_test_1')
compose.cli.verbose_proxy.proxy_callable: docker rename -> None
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('stefanscherer/mongo-windows')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
 u'Author': u'[email protected]',
 u'Comment': u'',
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'C:/mongodb/bin/mongod.exe'],
             u'Domainname': u'',
             u'Entrypoint': None,
             u'Env': [u'MONGO_MAJOR=3.2', u'MONGO_VERSION=3.2.6'],
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- (u'sha256:bfb70e68ed140d3007472039188b74db86d301906fee38609c445b204ca741d1')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
 u'Author': u'',
 u'Comment': u'',
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': None,
             u'Domainname': u'',
             u'Entrypoint': None,
             u'Env': None,
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('stefanscherer/mongo-windows')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
 u'Author': u'[email protected]',
 u'Comment': u'',
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'C:/mongodb/bin/mongod.exe'],
             u'Domainname': u'',
             u'Entrypoint': None,
             u'Env': [u'MONGO_MAJOR=3.2', u'MONGO_VERSION=3.2.6'],
...
compose.service.build_container_labels: Added config hash: 10f8e20aaaaf47b2ae97ef2e922100fe454f2bd69f7905b78eda5e7c14a9da11
compose.cli.verbose_proxy.proxy_callable: docker create_host_config <- (memswap_limit=None, links=[], devices=None, pid_mode=None, log_config={'Type': u'', 'Config': {}}, cpu_quota=None, read_only=None, dns=None, volumes_from=[], port_bindings={}, security_opt=None, extra_hosts=None, cgroup_parent=None, network_mode='nat', shm_size=None, tmpfs=None, cap_add=None, restart_policy=None, dns_search=None, privileged=False, binds=[], ipc_mode=None, mem_limit=None, cap_drop=None, ulimits=None)
compose.cli.verbose_proxy.proxy_callable: docker create_host_config -> {'Binds': [],
 'Links': [],
 'LogConfig': {'Config': {}, 'Type': u''},
 'NetworkMode': 'nat',
 'PortBindings': {},
 'VolumesFrom': []}
compose.cli.verbose_proxy.proxy_callable: docker create_container <- (name=u'test_test_1', image='stefanscherer/mongo-windows', labels={u'com.docker.compose.service': u'test', u'com.docker.compose.project': u'test', u'com.docker.compose.config-hash': '10f8e20aaaaf47b2ae97ef2e922100fe454f2bd69f7905b78eda5e7c14a9da11', u'com.docker.compose.version': u'1.7.0dev', u'com.docker.compose.oneoff': u'False', u'com.docker.compose.container-number': '1'}, host_config={'NetworkMode': 'nat', 'Links': [], 'PortBindings': {}, 'Binds': [], 'LogConfig': {'Type': u'', 'Config': {}}, 'VolumesFrom': []}, environment=[], volumes={}, detach=True)
compose.cli.verbose_proxy.proxy_callable: docker create_container -> {u'Id': u'ff26ca6b843ead4a8398b9dac021675174e0f1aee0095365c71503b6243a3c26',
 u'Warnings': []}
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- (u'ff26ca6b843ead4a8398b9dac021675174e0f1aee0095365c71503b6243a3c26')
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {u'AppArmorProfile': u'',
 u'Args': [],
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'C:/mongodb/bin/mongod.exe'],
             u'Domainname': u'',
             u'Entrypoint': None,
             u'Env': [u'MONGO_MAJOR=3.2', u'MONGO_VERSION=3.2.6'],
             u'Hostname': u'ff26ca6b843e',
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- (u'ff26ca6b843ead4a8398b9dac021675174e0f1aee0095365c71503b6243a3c26')
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {u'AppArmorProfile': u'',
 u'Args': [],
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'C:/mongodb/bin/mongod.exe'],
             u'Domainname': u'',
             u'Entrypoint': None,
             u'Env': [u'MONGO_MAJOR=3.2', u'MONGO_VERSION=3.2.6'],
             u'Hostname': u'ff26ca6b843e',
...
compose.cli.verbose_proxy.proxy_callable: docker attach <- (u'ff26ca6b843ead4a8398b9dac021675174e0f1aee0095365c71503b6243a3c26', stderr=True, stream=True, stdout=True)
compose.cli.verbose_proxy.proxy_callable: docker attach -> <generator object _multiplexed_response_stream_helper at 0x105fe3dc0>
compose.cli.verbose_proxy.proxy_callable: docker disconnect_container_from_network <- (u'ff26ca6b843ead4a8398b9dac021675174e0f1aee0095365c71503b6243a3c26', 'nat')

ERROR: for test  Windows does not support disconnecting a running container from a network

@StefanScherer
Copy link
Member

@git-jiby-me Windows 10 has bash, and Docker on Windows has busybox :-) Look at https://raw.githubusercontent.com/jhowardmsft/busybox/master/Dockerfile which is used for the integration tests of Windows Docker engine.

@git-jiby-me
Copy link

@StefanScherer yes i know, however the official busybox image used in

version: "2"
services:
  test:
    image: busybox
    command: top

points to https://github.com/docker-library/busybox/blob/de53df881f8a7cad77fe9e2042ee0a8d38402ce3/uclibc/Dockerfile and shouldn't work in windows 10 as well i believe. I didn't play with windows 10 and linux subsystem for windows yet, still playing with windows server 2016, but some day :)

@aanand
Copy link

aanand commented May 23, 2016

Weird - from the Cmd and Env entries in the image/container config it looks like a MongoDB container, but the Compose file says microsoft/sample-nginx?

@git-jiby-me
Copy link

git-jiby-me commented May 23, 2016

@aanand the image used in compose is stefanscherer/mongo-windows, i tried microsoft/sample-nginx before, but it didn't work as intended.

@dnephin dnephin removed this from the 1.8.0 milestone May 26, 2016
@dnephin dnephin reopened this May 26, 2016
@dnephin
Copy link

dnephin commented May 26, 2016

Sorry, I should have re-opened this issue earlier. We discovered, after implementing the proposed fix, that the windows engine does not use the same network drivers. The drivers it uses don't support the same things (or something like that), so our fix did not work.

This is still "a bug in windows engine" and we don't have a workaround until either disconnect is supported, or it uses a network driver that supports these aliases. That's my understanding of the current situation, but others on this issue have a better understanding of it.

@git-jiby-me
Copy link

git-jiby-me commented May 26, 2016

@dnephin Thanks for the update, i believe MS is strong about not supporting disconnecting container from network any time soon, so i think alias support in network drivers used in windows, is the only way this gets fixed.

@git-jiby-me
Copy link

@taylorb-microsoft any idea if we will see alias support in the network drivers in windows, this is one of the big blocker for using windows nodes in a swarm cluster that runs services defined by compose (the other one being missing overlay network support).

@msabansal
Copy link

@dnephin Can you please elaborate on the workaround. Is it the following code in connect_container_to_networks:

        if network in connected_networks:
            if short_id_alias_exists(container, network):
                continue

When I try docker-compose I still see disconnect_container_from_network and connect_container_to_network on Linux with following docker compose:

sabansal@sabansal-u1:~/work/src/github.com/msabansal/docker/test$ docker-compose version
docker-compose version 1.8.0, build f3628c7
docker-py version: 1.9.0
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013

The reason I am asking is that I am adding some support for aliases on windows and even after that docker-compose is not working for me

@dnephin
Copy link

dnephin commented Aug 9, 2016

Yes, that's the code. The workaround is that the Docker Engine (as of 1.11 or 1.12, I forget the version) should be adding the container short id as an alias. If Compose finds that short id alias it will skip the disconnect.

I'm not sure if we have a test for this, because the Compose code was written before engine supported it. I believe I tested it manually once or twice and it was working with a master version of engine at some point.

@msabansal
Copy link

The short id is added on start and not on create. This causes the disconnect to happen when composing.

@msabansal
Copy link

Can you please confirm or am I missing something.

@dnephin
Copy link

dnephin commented Aug 9, 2016

I'm not sure the Engine connects the network, that is certainly possible.

@msabansal
Copy link

@dnephin Seems like an engine issue. Networking is allocated in containerStart rather than containerCreate causing this issue. If I move

if err := daemon.initializeNetworking(container); err != nil {
return types.ContainerCreateResponse{Warnings: warnings}, err
}

from containerStart to containerCreate I see things working as expected on my test system

Will follow up on docker engine once I have my service discovery changes in

@uday31in
Copy link

uday31in commented Sep 7, 2016

I still see the issue

docker-compose version 1.8.0, build d988a55
docker-py version: 1.9.0
CPython version: 2.7.11
OpenSSL version: OpenSSL 1.0.2d 9 Jul 2015

compose.cli.verbose_proxy.proxy_callable: docker inspect_network <- ('my')
compose.cli.verbose_proxy.proxy_callable: docker inspect_network -> {u'Containers': {},
u'Driver': u'transparent',
u'EnableIPv6': False,
u'IPAM': {u'Config': [{u'Gateway': u'0.0.0.0', u'Subnet': u'0.0.0.0/0'}],
u'Driver': u'default',
u'Options': {}},
u'Id': u'306c1a975d89a7a99a2c55d7ac0676e9e15d421ad9703faa691df120152f5569',
u'Internal': False,
u'Labels': {},
u'Name': u'my',
...
compose.network.ensure: Network my declared as external. No new network will be created.
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=False, filters={u'label': [u'com.docker.compose.project=tachyon', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=tachyon', u'com.docker.compose.service=messaging', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 1 items)
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- (u'fb245c9911371c5d5b827846b1dea26477ab142230ca1543bfcb83a1c7a1cf5f')
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {u'AppArmorProfile': u'',
u'Args': [u'/S', u'/C', u'redis-server.exe'],
u'Config': {u'ArgsEscaped': True,
u'AttachStderr': False,
u'AttachStdin': False,
u'AttachStdout': False,
u'Cmd': [u'cmd', u'/S', u'/C', u'redis-server.exe'],
u'Domainname': u'',
u'Entrypoint': None,
u'Env': None,
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('my/nanoredis')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
u'Author': u'',
u'Comment': u'',
u'Config': {u'ArgsEscaped': True,
u'AttachStderr': False,
u'AttachStdin': False,
u'AttachStdout': False,
u'Cmd': [u'cmd', u'/S', u'/C', u'redis-server.exe'],
u'Domainname': u'',
u'Entrypoint': None,
...
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=tachyon', u'com.docker.compose.service=messaging', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 1 items)
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('my/nanoredis')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
u'Author': u'',
u'Comment': u'',
u'Config': {u'ArgsEscaped': True,
u'AttachStderr': False,
u'AttachStdin': False,
u'AttachStdout': False,
u'Cmd': [u'cmd', u'/S', u'/C', u'redis-server.exe'],
u'Domainname': u'',
u'Entrypoint': None,
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- (u'fb245c9911371c5d5b827846b1dea26477ab142230ca1543bfcb83a1c7a1cf5f')
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {u'AppArmorProfile': u'',
u'Args': [u'/S', u'/C', u'redis-server.exe'],
u'Config': {u'ArgsEscaped': True,
u'AttachStderr': False,
u'AttachStdin': False,
u'AttachStdout': False,
u'Cmd': [u'cmd', u'/S', u'/C', u'redis-server.exe'],
u'Domainname': u'',
u'Entrypoint': None,
u'Env': None,
...
compose.parallel.feed_queue: Pending: set([<Service: messaging>])
compose.parallel.feed_queue: Starting producer thread for <Service: messaging>
compose.service.start_container_if_stopped: Starting tachyon_messaging_1
compose.cli.verbose_proxy.proxy_callable: docker attach <- (u'fb245c9911371c5d5b827846b1dea26477ab142230ca1543bfcb83a1c7a1cf5f', stream=True, stderr=True, stdout=True)
compose.cli.verbose_proxy.proxy_callable: docker attach -> <generator object _multiplexed_response_stream_helper at 0x0000000003623FC0>
compose.cli.verbose_proxy.proxy_callable: docker disconnect_container_from_network <- (u'fb245c9911371c5d5b827846b1dea26477ab142230ca1543bfcb83a1c7a1cf5f', 'my')
compose.parallel.parallel_execute_iter: Failed: <Service: messaging>
compose.parallel.feed_queue: Pending: set([])

ERROR: for messaging Windows does not support disconnecting a running container from a network
�[31mERROR�[0m: compose.cli.main.main: Encountered errors while bringing up the project.

@msabansal
Copy link

I have two pending PRs to fix this moby/moby#25987 and moby/moby#26287

@aanand aanand added this to the 1.9.0 milestone Sep 15, 2016
@PatrickLang
Copy link

@msabansal now that those are merged - what's next?

@git-jiby-me
Copy link

@msabansal @bfirsh this is awesome, since the issue have milestone set for 1.9.0 i believe with 1.9.0 compose should be working with windows as well. @msabansal i believe for this an update for windows server 2016 is also required right (or no ?), if so when would that be rolling out.

@msabansal
Copy link

I validated with the latest master and everything works smoothly.

@git-jiby-me Yes an update is needed. This will be windows server 2016 with the GA package.

@git-jiby-me
Copy link

awesome !!, looking forward to that, thanks for the work on these @msabansal and everyone else involved :)

@git-jiby-me
Copy link

@msabansal when would be windows server 2016 with the GA package be available, or is it out already.
@bfirsh which release of docker will have these fixes in ?

@shin-
Copy link

shin- commented Oct 17, 2016

@msabansal 's changes ( #3252 (comment) ) seem to have been added to the 1.13 milestone. I'll take this out of the current milestone since it seems no code change needs to happen on our end.

Maybe it's okay to close? cc @aanand @dnephin

@shin- shin- removed this from the 1.9.0 milestone Oct 17, 2016
@abergs
Copy link

abergs commented Jan 24, 2017

Any update on this?

@thecloudtaylor
Copy link

tagging Windows networking PM's @JMesser81 and @kallie-b

@msabansal
Copy link

@abergs This was fixed in Docker and you should be able to use compose with Windows 

@shin- shin- closed this as completed Feb 11, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests