Repository navigation
DNS
The DNS section gives containers names, so you can reach web.test instead of copying an
address that changes every time a container is recreated. It covers three things, in rising order of
reach:
-
Local domains —
container's own DNS, on one Mac. -
Per-host zones — every Mac naming its containers under its own part of a fleet domain, such as
web.mini.fleet.internal. - Names across Macs — every Mac able to look up the other Macs' containers by those names.
With hosts paired, the list has a host chip on each row and a Host filter, and the form has Create on.
A working domain needs two things, and they live in different places with different permissions:
-
macOS knowing the domain, so this Mac sends lookups for it to
container. That is a file in/etc/resolver, which only an administrator can write. -
The runtime naming containers under it, so
webis answered asweb.test. That is[dns] domainincontainer'sconfig.toml, and changing it restartscontainer.
Either can exist without the other, so each row shows both halves and says plainly when only one is there, with the missing half offered beside it:
| Status | What it means |
|---|---|
| In use for containers | Both halves: containers are named under it and this Mac can reach them by name. |
| Containers only — not on this Mac | Containers can reach each other by name, but this Mac cannot look the names up. Set Up on This Mac… fixes that. |
| Not used for containers | This Mac can look names up under it, but containers are not named there. |
| Not set up | Neither. |
Only one domain at a time names containers, because config.toml holds one.
+ ▸ New Domain…, or a suggestion from + ▸ Suggestions…:
- Create on — which Mac's DNS settings, once you have hosts.
-
Kind:
-
Container names — containers are named under the domain: a container called
webis reached asweb.test, from this Mac and from other containers. -
Host alias — a single name that, inside a container, reaches a service on this Mac, such as
host.container.internal. Give it an Address: an IPv4 address that stands for this Mac inside containers, which the runtime sends to this Mac's own localhost. Pick one nothing on your network uses; the example, 203.0.113.113, is reserved for documentation.
-
Container names — containers are named under the domain: a container called
-
Domain — lowercase letters, numbers and hyphens, with dots between parts. Avoid a real domain
you also use on the internet: this Mac would send its lookups to
containerinstead. Anything under.localis refused, because macOS keeps it for Bonjour — printers and AirPlay would stop being found. - Name containers under this domain — for Container names. Turning it on replaces whichever domain names containers now.
The rail shows the exact administrator command before anything runs, with a Copy button, so a password prompt never asks you to approve something the screen did not say, and you can type it into Terminal yourself if you would rather.
On This Mac, without the Flotilla Helper, creating or deleting a domain shows the standard macOS administrator prompt. The prompt is itself the confirmation. With the Helper, there is no prompt, so Flotilla asks first, and the Helper makes the change.
On a host, the host's own Helper makes the change, and it must be switched on there. A host without it refuses and says why, rather than showing a password prompt nobody is there to answer. A DNS change on a host is confirmed on the admin only: the host's owner approved the Helper once.
Use for Containers… and Stop Using for Containers… always ask, because they restart
container on that Mac, which stops every running container there. The dialog gives the count,
and the button says Restart and Use or Restart and Stop. If container is not running,
nothing stops; the change applies when it next starts.
Only containers created afterwards get the new name. Recreate the others to reach them by it.
Delete removes the domain from that Mac's DNS settings. Containers still named under it keep those names until you stop using it for containers; the Mac just cannot look them up.
+ ▸ Set Up Zones…, once a host is paired, gives every Mac its own zone under a fleet domain: <its label>.<fleet domain>. The fleet domain defaults to fleet.internal, and can be changed on the admin. A Mac's
label is its name in lowercase, with anything other than letters and digits made a hyphen — "Studio
Mac" becomes studio-mac.
Zones exist so that two Macs' web never share a name: web.mini.fleet.internal and
web.studio-mac.fleet.internal are different containers on different Macs.
Tick the Macs to set up. Each says first what setting it up would do: nothing (already done), add
the domain, and name its containers there — which restarts that Mac's container and stops its
running containers. The confirmation adds up how many containers stop across all of them. A host
whose Helper is off cannot be ticked.
In Set Up Zones, Look up containers on other Macs by name lets every Mac — the admin and every host — resolve the other Macs' zones. How it works:
- A Mac's own zone stays the runtime's, answered with the container's own address.
- Every other Mac's zone is answered by Flotilla itself, on
127.0.0.1:7869— loopback only, beside the fleet's port 7868. - The Helper keeps one file per other zone in
/etc/resolver, each pointing at that responder. - The admin builds the table of names from what it already checks every 30 seconds and sends each host its copy. A host only applies what it is sent, and keeps the last table after a restart.
The answer is the other Mac's address, and only for a container that publishes a port there —
not one published on loopback only. Connect on the published port: if web publishes port 8080
on the mini, web.mini.fleet.internal:8080 reaches it from any Mac. A container with no published port
gets no answer, and the list in Set Up Zones says so — not reachable from other Macs — publish a
port — rather than handing back an address that leads nowhere.
The fleet domain must end in .internal, .test or .home.arpa, names reserved for private
use. The Helper refuses anything else as root, before writing a file, because a fleet domain outside
them could redirect a real website on every Mac. The resolver files can only ever point at Flotilla
on the same Mac.
Not yet: a tunnel or overlay network between Macs. Names across Macs are DNS over the network you already have; a container must be reachable through a published port.
Flotilla — a native macOS app for Apple's container CLI. A personal project, free to use, Apache-2.0. No account, no telemetry.
Getting started
Fleet
Containers and resources
- Containers
- Groups and suggestions
- Images
- Registries
- Volumes and networks
- Kubernetes
- DNS
- Machines and containers
- Machines
- Terminal
- Files
Using Flotilla
- Menu bar and window
- Views and filtering
- Logs and diagnostics
- Sharing and export
- Flotillafile
- Settings
- Greta
- Flotilla Helper
More