Repository navigation
Roadmap: docker-net-dhcp 2.x #906
claymore666
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
v1.9.0 is the current release and the last feature release of the 1.x line.
From here, 1.x gets security fixes only. Everything else happens on 2.x.
Rationale
Testing and ensuring the plugin works as designed became more and more
complicated and painful. Utilizing an underlying external DHCP client
brought inflexibilities and slowed down development. During preparation of
v1.10.0 I realized that I spent more time fixing the interaction with CI and
the DHCP client than I was focused on delivering actual enhancements.
What changes in 2.0
The plugin gets its own DHCP client. 1.x drives
dhcpcdas a childprocess per container. 2.0 replaces it with a DHCP client library written
for this plugin, so there is no external client, no process per endpoint,
and every lease event is visible to the plugin directly. The library is
dhcp-golib, public since
2026-09-08; the plugin carries a pinned copy of it, so a plugin release
always builds from a known library state. This also answers the question in #246: the dhcpcd 11 cutover does
not reach us, because 2.0 no longer uses dhcpcd at all.
Real address conflict detection. 2.0 implements RFC 5227: the plugin
probes an offered address before a container uses it, watches for a
conflicting claim for the life of the lease, and declines and re-acquires
when one appears. A per-network
conflict_checkoption chooses betweenwaiting for the check before the container starts, running it in the
background, or turning it off.
Everything you use today keeps working. Bridge, macvlan and ipvlan
modes, lease renewal and recovery across plugin and daemon restarts, server
allow and deny lists, DNS and MTU propagation, routes, hostname and FQDN
registration, the audit log, health and metrics all carry over. The
docker network createline and the compose file you have now are thetarget, unchanged.
The 2.x milestones
v2.0.0-rc1on 2026-09-05. IPv4 only. The new client, conflict detection, and everything above. Installable by tag for people who want to try it; not for production.v2.0.0-rc1tov2.0.0-rc3preceded it.release_leaseoption and the/v2module path.ipv6_modewith SLAAC and router advertisements, address lifetimes and renumbering taken from the router, Reconfigure (#925),release_lease=on_remove,host_ifname. Prefix delegation is not in it (#214, no milestone yet).vlanoption (#902), a bridge the plugin creates and owns (#903), link-local fallback when no server answers (#904), macvlan and ipvlan sub-mode options (#905). IPv6 on a network that names this plugin as its IPAM driver (#960). v2.3.1 followed on 2026-09-28 (release): Join returns each IPv6 route once and an endpoint without an IPv6 address gets no IPv6 routes (#1125), and in IPAM mode a fixed-MAC container takes back its own kept identity (#1118).dev. Landed so far: IPv6-Only Preferred (#1027), Rapid Commit for v4 and v6 (#1031, #926), temporary addresses (#927),user_class(#1120), and the library side of FORCERENEW (#1119). Still open: PREF64 (#1028), option 249 routes (#1030), stable-privacy interface identifiers (#1032), the plugin side of FORCERENEW (#1119), vendor and timezone options (#1034, #1033), a bounded memory that a network has no DHCPv6 server (#1038), and prefix delegation (#214). Milestone 34 lists all of it.Three things need a change in Docker's engine first and have no milestone until it ships: ipvlan with this plugin as the IPAM driver (#949; Docker sets the MAC it generates for the IPAM driver on the container's interface at start, and an ipvlan interface cannot change its MAC, so ipvlan networks keep
--ipam-driver null), the endpoint name at create (#218), and one multi-architecture manifest list per plugin tag (#1140;docker plugin installreads a single image manifest only).There are no dates. Each milestone ships when its work is done and tested,
release-candidate tags first (
vX.Y.Z-rcN). The milestone pages list the issues in each.Where things are
devand ships frommain;mainis at v2.3.1.2.0.0integration branch is merged and closed.say so here.
All reactions