Docker podría ser portado a FreeBSD tal cual, pero...
Hola, soy un incompetente.
La misteriosa muerte súbita de mi servidor doméstico sigue sin resolverse, y con la caída del VPS de ConoHa y la muerte del propio servidor DNS de ConoHa, estuve inactivo por un tiempo.
En primer lugar
No hace falta decir que lo que originalmente evolucionó de jail a una forma más amigable para las aplicaciones es el Docker actual.chroot es simplemente un change root, un entorno donde se imponen restricciones a nivel del sistema de archivos. En cierto sentido, es una prisión, pero es un poco diferente. Solo cambia la root, /.
Una herramienta conveniente y fácil de entender es arch-chroot, pero probemos un chroot normal.
thepassenger:[haturatu]:~$ sudo chroot chroot-test/
chroot: failed to run command ‘/usr/bin/bash’: No such file or directoryComo puede ver, con el chroot predeterminado, bash en sí no es visible desde ese entorno aislado, por lo que no puede ingresar. E incluso si copia /bin/bash, las bibliotecas dependientes requeridas por bash no pueden ser referenciadas desde ese entorno aislado, por lo que no se puede ejecutar.
Esto es Change Root. Solo cambia la raíz.
sudo mkdir /mnt/arch
sudo pacstrap /mnt/arch base linux linux-firmware man-db vim
sudo arch-chroot /mnt/archSolo con lo anterior,
thepassenger:[haturatu]:~$ sudo arch-chroot /mnt/arch
==> WARNING: /mnt/arch is not a mountpoint. This may have undesirable side effects.
[thepassenger /]# ls
bin dev home lib64 opt root sbin sys usr
boot etc lib mnt proc run srv tmp var
[thepassenger /]# cd ~
[thepassenger ~]# ls
[thepassenger ~]# ls -la
total 16
drwxr-x--- 4 root root 4096 Mar 31 11:37 .
drwxr-xr-x 16 root root 4096 Mar 31 11:37 ..
drwx------ 3 root root 4096 Mar 31 11:37 .gnupg
drwx------ 2 root root 4096 Mar 31 11:37 .ssh
[thepassenger ~]#Después de esto, si ejecuta ps -ef en este entorno chroot, verá que los procesos de la máquina host son visibles desde este chroot.
En el caso de jail de FreeBSD, se mejora aún más, y los procesos, la red, el espacio de usuario, etc., también se aíslan. Además, cgroups de Linux fue diseñado e implementado por ingenieros de Google, lo que llevó a la actual cgroups v2. La razón por la que uso Docker es únicamente para propósitos distintos de las restricciones de recursos fácilmente modificables, y jail estaría bien, pero ¿por qué no se realiza una implementación similar en FreeBSD? En el laberinto... ¿No se pueden establecer límites de recursos con jail? No, se puede, pero ¿por qué...?
Estado actual de Docker en FreeBSD
Todavía es compatible, pero es sorprendentemente antiguo.

Lo que esto significa es que es compatible, pero
Situación reciente de contenedores FreeBSD #Docker - Qiita
Como indica este artículo, parece que ahora no se mantiene.
Además, esta versión de Docker para FreeBSD parece estar ejecutando Docker a través del kernel de Linux, no una implementación nativa.
¿No se puede hacer en FreeBSD?
Francamente, sería muy apreciado si se pudiera crear un entorno de prisión jail totalmente compatible con Docker simplemente cambiando el alias.
Los límites de recursos también se pueden establecer combinándolos con rctl.
https://codeberg.org/bsdpot/pot
También hay implementaciones que utilizan jail, pero en cierto sentido, son implementaciones dentro del ecosistema de FreeBSD.
Es decir, se puede implementar como un entorno de contenedor. Sin embargo, el problema con la portabilidad son los scripts de construcción como Dockerfile. Se puede convertir fácilmente en un script de shell de construcción que se puede implementar con pot, pero
FROM
WORKDIR
COPY
ARG
ENV
RUN
EXPOSE es un lenguaje de construcción (?) inevitable en un sistema de capas como este.
En otras palabras, dado que sus administradores de paquetes también son diferentes, la conversión completamente automática parece un poco difícil. Parece que potfile puede manejarlo hasta cierto punto.
https://github.com/ebarriosjr/potMachine/blob/master/Potfiles/Potfile