netboot.xyz offers a feature rich zero configuration iPXE boot-up environment with all the linux and utility images you could ask for. This is great as we don’t have to maintain up-to-date bootable PXE images locally.
We are running netboot.xyz on docker swarm. We found the tftp server did not function correctly when utilizing the swarm network so instead bound this specific container’s networking to host.
docker service create --replicas 1 --name netbootxyz \ --constraint node.hostname==specific_node_name \ --network=host \ --replicas=1 \ rjocoleman/netboot.xyz
Finally you need to configure your DHCP server to return the IP for specific_node_name as the Next Server.
N.B. the contraint does mean we lose resiliency, but given the low resources this container requires (it’s less than 5MB!) you could easily remove the constraint and replace –replicas=1 with –mode=global. How you expose multiple swarm nodes behind a single virtual IP is a topic for another post.