Repository navigation
dockma 0.6.0
Pre-release
Pre-release
Added
dockma installstamps the guest with the release it came from (~/.dockma/guest/origin), andmake install-gueststamps itlocal.dockma statuswarns when the installed guest is from another dockma release than the CLI.dockma startandrestartinstall this version's guest when none is installed, or when the installed one came from another release, so upgrading the CLI alone is enough. A guest built from source (make install-guest) or installed before this release is never replaced; rundockma installonce to opt in.DOCKMA_NO_AUTO_INSTALL=1turns it off. The daemon's own launches, at login and after a crash, don't install anything.
Changed
- Containers start and stop slightly faster.
docker runof a container that exits at once takes about 80 ms instead of 170 ms. The VM boots to Docker ready in about 1.0 s. Idle CPU use is unchanged. Two changes contribute: the host now boots the guest kernel with expedited RCU grace periods (rcupdate.rcu_expedited=1), which takes effect afterdockma restart; and the guest kernel's timer runs at 1000 Hz instead of 250 Hz, which shortened removing a container's network link from 21 ms to about 9 ms. The timer change needs the new guest:dockma install, ormake guest install-guestfor a source build. - The guest's logs leave through one virtio console device with named ports, "console" and "docker", instead of two console devices told apart by probe order. dockerd writes its log directly to the "docker" port, without a TTY or a wrapper pipe. The VM has one PCI device fewer, which shortens kernel boot by about 8 ms. This changes the guest protocol to 4: install the matching guest with
dockma install(install.sh does this), ormake guest install-guestfor a source build. - The guest's kernel and initramfs are named as LinuxKit names its kernel+initrd output:
~/.dockma/guest/dockma-kernelanddockma-initrd.img(wereImageandinitramfs.cpio.lz4).dockma install, which install.sh runs, puts the new files in place. A CLI built from source needsmake guest install-guestonce; until thendockma startrefuses with that hint. - Sequential writes to the container filesystem are about 25 % faster (5.3 instead of 4.1 GB/s for 1 GiB): the guest kernel enables transparent huge pages in madvise mode, so ext4 can use large page-cache folios. fsync-bound writes and the VM's host memory use are unchanged. Needs the new guest:
dockma install, ormake guest install-guestfor a source build.
Fixed
dockma startrecords the path it was run as in the launchd job, symlinks included, instead of the symlink's target. A package manager's upgrade that deletes the old versioned directory no longer breaks the next autostart or crash restart. Rundockma restartonce after upgrading to rewrite the job.- The logs in
~/.dockma/logsno longer grow without limit while the VM runs: each is rotated once it passes 10 MB, keeping three previous generations as before. dockma config --diskwarns when the data disk could grow past the free space on the Mac's volume.- The guest logs a failed
resize2fstoconsole.loginstead of hiding it; the data disk then keeps its old size. Needs the new guest (dockma install, ormake guest install-guest). dockma logs -fexits quietly when its reader goes away, anddockma shellrestores the terminal reliably when it is killed.- A SIGHUP, such as from closing the terminal of a
dockma daemonrun by hand, shuts the VM down gracefully instead of killing the daemon outright. - A daemon whose status this CLI couldn't decode, such as one from another dockma version, counted as not running:
dockma statussaid "stopped", andstart,stop,configanddeleteacted as if no VM were running.statusnow says the daemon runs another version and suggestsdockma restart(status --jsonreports"state":"unknown"), and a state that a newer daemon reports but this CLI doesn't know shows asunknown. dockma config, and the daemon when it stores the VM's MAC address, keepconfig.jsonkeys they don't know instead of dropping them, so running an older dockma no longer erases settings a newer one added.- A tunnelled connection whose client failed mid-stream (a reset rather than a close) no longer stays open in the guest while the container's side is idle; the agent now closes both ends. An agent whose vsock accept kept failing no longer re-listens in a tight loop. The agent is 0.6.1. Needs the new guest (
dockma install, ormake guest install-guest).