Docker Community Forums

Share and learn in the Docker community.

IP Address aliasing?

docker

(Mattgroves) #1

Expected behavior

docker run -d --name cb1 -p 10.0.75.2:8091:8091 couchbase
docker run -d --name cb2 -p 10.0.75.3:8091:8091 couchbase

I would expect this to create two containers that I can access with different IP addresses that have the same port numbers exposed.

Actual behavior

The first command works fine:

PS C:\WINDOWS\system32> docker run -d --name cb1 -p 10.0.75.2:8091:8091 couchbase
d8ea41a0b900bb1d164bf0ba5e88a52edf99000a46b95d50002769cd48a33836

But the second one (cb2 above) I get an error message:

PS C:\WINDOWS\system32> docker run -d --name cb2 -p 10.0.75.3:8091:8091 couchbase
af7a66438f7f891485f8b84420f43747c4aafce27d2b094f17eaf5cc6b29bb1b
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: driver failed programming external connectivity on endpoint cb2 (1179ea30128361b4b6d49bfd6cb4268d83ca98e789180f24b955f9f03785aaaa): Error starting userland proxy: listen tcp 10.0.75.3:8091: bind: cannot assign requested address.
PS C:\WINDOWS\system32>

Information

I’m trying to create a cluster of Couchbase nodes. From what I can tell, each node (docker container) in that server needs to expose the same port numbers, otherwise I will be unable to use SDKs to interact with that cluster.

Note that the program using the SDK does not itself reside in a docker container, but on the host machine (or potentially some other machine on the network).

This doesn’t seem like a bug; it’s more likely that I’m doing something wrong or don’t understand something. Am I going about this wrong, and can I achieve what I want to do?

Steps to reproduce the behavior

  1. Install Docker for Windows Beta, I’m using the default setting under ‘Network’
  2. docker run -d --name cb1 -p 10.0.75.2:8091:8091 couchbase
  3. docker run -d --name cb2 -p 10.0.75.3:8091:8091 couchbase

I do not think this error has anything to do with couchbase specifically, but that’s what I’m using.

UPDATE: I think I have a fundamental misunderstanding of what’s going on. 10.0.75.2 is the IP address for MobyLinuxVM running in a Hyper-V VM. I guess what I’d need is to have multiple IP addresses assigned to that machine? Multiple network adapters. Is that the right way to go, and how do I make that happen?


Run cannot assign requested address
(Alexandre) #3

Yes, you need to make sure that the IP addresses are assignable. The docker engine, as far as I understand networking, won’t be able to bind to an IP that is not part of its interfaces.


(Mattgroves) #4

Thanks for the information.

Do you know how to add virtual network adapters? It doesn’t seem to be something that the Docker for Windows interface can do. Is it something I do at the VM level? At the host level? Both?