Files
moby/libnetwork
Rob Murray 19dc38f79b Listen on mapped host ports before mapping more ports
Because we set SO_REUSEADDR on sockets for host ports, if there
are port mappings for INADDR_ANY (the default) as well as for
specific host ports - bind() cannot be used to detect clashes.

That means, for example, on daemon startup, if the port allocator
returns the first port in its ephemeral range for a specific host
adddress, and the next port mapping is for 0.0.0.0 - the same port
is returned and both bind() calls succeed. Then, the container
fails to start later when listen() spots the problem and it's too
late to find another port.

So, bind and listen to each set of ports as they're allocated
instead of just binding.

Signed-off-by: Rob Murray <rob.murray@docker.com>
2025-05-28 11:38:59 +01:00
..
2025-05-01 14:16:44 +02:00
2025-02-25 15:24:25 +00:00
2024-09-06 21:53:09 +10:00
2024-09-06 21:53:09 +10:00
2025-04-07 16:56:49 +01:00
2025-05-15 10:00:16 +02:00
2025-05-26 13:21:20 -04:00
2025-05-15 18:24:58 +02:00
2025-05-26 13:21:20 -04:00
2024-09-06 21:53:09 +10:00
2025-04-09 08:45:33 +02:00
2025-04-09 08:45:33 +02:00
2025-04-04 11:21:17 +02:00

libnetwork - networking for containers

Libnetwork provides a native Go implementation for connecting containers

The goal of libnetwork is to deliver a robust Container Network Model that provides a consistent programming interface and the required network abstractions for applications.

Design

Please refer to the design for more information.

Using libnetwork

There are many networking solutions available to suit a broad range of use-cases. libnetwork uses a driver / plugin model to support all of these solutions while abstracting the complexity of the driver implementations by exposing a simple and consistent Network Model to users.

Contributing

Want to hack on libnetwork? Docker's contributions guidelines apply.

Code and documentation copyright 2015 Docker, inc. Code released under the Apache 2.0 license. Docs released under Creative commons.