When using composefile version 2 with the default bridge network this error occurs:
$ docker-compose up
Creating dockercomposetest_debian_1
ERROR: b'Network-scoped alias is supported only for containers in user defined networks'
This is my docker-compose.yml:
version: '2'
services:
debian:
image: debian:wheezy
networks:
default:
external:
name: bridge
I'm using compose 1.6.0 and docker 1.10.1.
To use the bridge network use network_mode
: https://docs.docker.com/compose/compose-file/#network-mode
Compose relies on network scoped aliases, so if you try to use bridge
as an external network it will set those aliases. If you use network_mode
, it will disable the built-in aliases, and rely on the aliases made available by the bridge network.
Thanks! Works like a charm!
@dnephin Is it possible to join both the bridge
external network and other networks at the same time? It seems it should be possible but when I do it like the OP I get the error mentioned and when I use network_mode: bridge
I get:
ERROR: 'network_mode' and 'networks' cannot be combined
Would also like to know if a container can join a default bridge network as a external network and a custom network at the same time. Please help!
I figured out, i can have the docker-compose to start the container in a custom network and then do a docker network connect bridge [container] to join the default network that way.
I'm also trying to find a way to connect a service to the default bridge network and it's own. @niko ninchan8328 How did you end up doing this? Is there a way to easily do both?
regarding this message ERROR: 'network_mode' and 'networks' cannot be combined
is there a way for a container to access both user defined overlay networks & physical external network such as host or bridge ?
@prologic the way i do is to have the docker-compose spin up the container in its network, then use the docker network connect command to assign the container to different network as needed. I don't think you can do the default bridge and dedicated network at the same time in the compose file but I could be wrong
@ninchan8328 Ahh I see. This sounds like a very good use case for a new autodock plugin say autodock-network-attach
whose sole responsibility is to listen to started
events for any container that have an environment NETWORK_ATTACH=<network1,network2,networkN>
for a list of networks to attach to after being brought up.
I'll implement this tonight; because it'll mean that I don't have to use network_mode: "bridge"
in _many_ of my services and _explicitly_ attach the ones that need attaching to the "bridge" network :)
My current workaround for joining the bridge network and the default compose created one:
version: '3'
services:
multi-network-service
image: ubuntu
labels:
- networks=bridge
connect-bridge:
image: stmllr/docker-client
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
depends_on:
- multi-network-service
command: /bin/sh -c 'docker ps -f label=networks=bridge --format "{{.ID}}" | xargs docker network connect bridge'
Which gives me:
"Networks": {
"bridge": {
...
},
"test_default": {
"Aliases": [
"multi-network-service",
"a579a8c514ff"
],
...
}
}
For future reference, the docs for network_mode
are here: https://docs.docker.com/compose/compose-file/#network_mode (there seems to be a website bug that prevents browsers scrolling to #network_mode
, but it is on that page)
The configuration provided by the bug reporter:
version: '2'
services:
debian:
image: debian:wheezy
networks:
default:
external:
name: bridge
Should be:
version: '2'
services:
debian:
image: debian:wheezy
network_mode: bridge
@Wilfred This doesn't work for docker stack deploy ...
:
Ignoring unsupported options: network_mode
I have an issue where I can network two images together via docker
but not docker-compose
.
I've asked about it here: https://groups.google.com/forum/#!topic/drools-setup/VvYVh1GWFps
but maybe you guys know the answer, since this github issue is directly related to my problem.
what I need, is for 2 compose services to use the same network as the default network used by regular docker
commands.
Edit:
using the above network_mode: bridge
fixes my problem!
How to choose Static with network_mode: bridge
For future reference, the docs for
network_mode
are here: https://docs.docker.com/compose/compose-file/#network_mode (there seems to be a website bug that prevents browsers scrolling to#network_mode
, but it is on that page)The configuration provided by the bug reporter:
version: '2' services: debian: image: debian:wheezy networks: default: external: name: bridge
Should be:
version: '2' services: debian: image: debian:wheezy network_mode: bridge
it works for me
Does anyone have a work-around for: 'network_mode' and 'networks' cannot be combined
?
how to set static ip address with network_mode
?
I want to set one of my service to use both the default and external bridge (make it work for nginx-proxy auto self discovery) network, I tried a lot of methods like the following, but it always gave me ERROR: for dns-management-frontend network-scoped alias is supported only for containers in user defined networks
error.
version: '2'
services:
dns-management-frontend:
image: daocloud.io/liudonghua123/dns-management-frontend
environment:
- VIRTUAL_HOST=dns-management.domain.com
depends_on:
- dns-management-backend
ports:
- 80
restart: always
networks:
- default
- bridge
dns-management-backend:
image: daocloud.io/liudonghua123/dns-management-backend
depends_on:
- db
ports:
- 8080
restart: always
networks:
- default
db:
image: daocloud.io/liudonghua123/dns-management-db
volumes:
- ./mysql-data:/var/lib/mysql
ports:
- 3306
restart: always
networks:
- default
redis:
image: redis
ports:
- 6379
restart: always
networks:
- default
networks:
bridge:
external:
name: bridge
Since I had the same problem and fix seemed to happen since then:
@sueastside your workaround is genius and the only working solution I found after 4h of search. I have a database that runs on the host machine and I need to connect to it. THANK YOU SO MUCH!!!
The only thing, that need to be changed to run now is the command of the connection bridge (add -L 1
at xargs
):
command: /bin/sh -c 'docker ps -f label=networks=bridge --format "{{.ID}}" | xargs -L 1 docker network connect bridge'
Note that you can just use the docker
image to run the same command:
connect-bridge:
image: docker:stable
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
command: /bin/sh -c "docker ps -f label=networks=bridge -q | xargs -I'{}' docker network connect bridge {}"
Also, it can easily fail if brought up a second time and errors with endpoint with name already exists in network bridge, but hopefully that's not a big deal.
Most helpful comment
@dnephin Is it possible to join both the
bridge
external network and other networks at the same time? It seems it should be possible but when I do it like the OP I get the error mentioned and when I usenetwork_mode: bridge
I get: