Personally I prefer FreeBSD as an operating system but the lack of Docker keeps me stuck to Linux (I don’t even like Docker but at this stage it’s now the de facto standard for packaging containers).
Personally I prefer FreeBSD as an operating system but the lack of Docker keeps me stuck to Linux (I don’t even like Docker but at this stage it’s now the de facto standard for packaging containers).
- a lot of project distribute a docker image or we have community "distributions" like linuxserver.io. But nothing come close to a good distribution package management so far,
- the security of containers is still very unclear, misunderstood & unequal,
- the ecosystem is now fragmented between docker, podman, etc.
- generally it feels like things have become more complicated !
We also now do see new generation (?) of distributions centered around containers like CoreOS, MicroOS or even Silverblue.
My questions would be: is the BSD world trying go move this way too with bsdpot & potluck or consider this is not the way to go or this just a distraction and Ports will always be the way to distribute software?
Though to be fair I haven’t tried Pot. Used ez_jails a lot in the past, as well as rolling my own build scripts. So maybe I’m missing a trick?
In a bhyve vm config file you add 'bhyve_options' and add some virtio-9p mount points. they are 'per slot' so each of these mounts will need a new number '-s 15' '-s 16' as in my below example.
on FreeBSD host, assuming you are using bhyve-vm (works with plain bhyve also):
/usr/local/vm/nixos/nixos.conf
bhyve_options="-s 15,virtio-9p,podman-archivebox=/HOSTZFS/Services/VM/NixOS/ArchiveBox -s 16,virtio-9p,podman-music=/HOSTZFS/Audio/Music/Flac"
in VM (nixos):
fileSystems."/mnt/podman-archivebox" = {
device = "podman-archivebox";
fsType = "9p";
options = [ "trans=virtio" "version=9p2000.L" "_netdev" "cache=loose" ];
};
fileSystems."/mnt/podman-music" = {
device = "podman-music";
fsType = "9p";
options = [ "trans=virtio" "version=9p2000.L" "_netdev" "cache=loose" "ro" ];
};
If you were not using NixOS, add your mount points in the VM (/mnt/podman-archivebox, /mnt/podman-music).
Then mount them with your docker/podman setup. virtualisation.oci-containers.containers."ArchiveBox" = {
image = "archivebox/archivebox";
...
...
volumes = [
"archivebox_data:/data"
"/mnt/podman-archivebox/archive:/data/archive"
"/mnt/podman-archivebox/sources:/data/sources"
"/mnt/podman-archivebox/ArchiveBox.conf:/data/ArchiveBox.conf"
];
virtualisation.oci-containers.containers."navidrome" = {
image = "deluan/navidrome:latest";
...
...
volumes = [
"navidrome_data:/data"
"/mnt/podman-music:/music:ro"
];
};
The 9p mount points won't get passed into the VM until you STOP the VM and then START the VM (restart won't work).
Once that is done and you can confirm the files are passed through and working, things 'just work'.
This does not work for things that require file locks like passing database files through 9p.
Hope this is helpful to someone.