diff --git a/README.md b/README.md index 773bd9a..c2cca0c 100644 --- a/README.md +++ b/README.md @@ -113,15 +113,60 @@ default via 10.255.0.123 dev my-bridge0 / # ``` +Or, in a Docker Compose file: + +```yaml +version: '3' +services: + app: + hostname: my-http + image: nginx + mac_address: 86:41:68:f8:85:b9 + networks: + - dhcp +networks: + dhcp: + external: + name: my-dhcp-net +``` + +The above Compose file assumes your network has already been created with `docker network create`. **This is the +recommended way to use `docker-net-dhcp`**, since it allows the network to be shared among multiple compose projects and +other containers. However, you can also create the network as part of the Compose definition. In this case Docker +Compose will manage the network itself (for example deleting it when `docker-compose down` is run). + +```yaml +version: '3' +services: + app: + image: nginx + hostname: my-server + networks: + - dhcp +networks: + dhcp: + driver: ghcr.io/devplayer0/docker-net-dhcp:golang + driver_opts: + bridge: my-bridge + ipam: + driver: 'null' +``` + Note: - It will take a bit longer than usual for the container to start, as a DHCP lease needs to be obtained before creating it - Once created, a persistent DHCP client will renew the DHCP lease (and then update the default gateway in the container) when necessary - **this client runs separately from the container** - Use `--mac-address` to specify a MAC address if you've configured reserved IP addresses on your DHCP server, or if you want a container to re-use an old lease + - Add `--hostname my-host` to have the DHCP transmit this name as the host for the container. This is useful if your + DHCP server is configured to update DNS records from DHCP leases. - If the `docker run` command times out waiting for a lease, you can try increasing the initial timeout value by passing `-o lease_timeout=60s` (e.g. to increase to 60 seconds) +## Docker Compose + +Sample Docker Compose file: + ## Debugging To read the plugin's log, do `cat /var/lib/docker/plugins/*/rootfs/var/log/net-dhcp.log` (as `root`). You can also use