Docker, кажется, можно было бы портировать на FreeBSD напрямую, но...
Привет, я бездарь.
Таинственная болезнь моего домашнего сервера, приведшая к его внезапной смерти, до сих пор не разрешена, и из-за падения VPS ConoHa, а также смерти DNS-сервера ConoHa, он был недоступен некоторое время.
Что это вообще такое?
Само собой разумеется, что то, что изначально развилось из jail в более удобное для приложений, — это сегодняшний Docker.chroot — это всего лишь change root, среда, в которой наложены ограничения на уровне файловой системы. В некотором смысле это тюрьма, но немного другая. Меняется только root, то есть /.
Удобный и понятный пример — arch-chroot, но давайте попробуем обычный chroot.
thepassenger:[haturatu]:~$ sudo chroot chroot-test/
chroot: failed to run command ‘/usr/bin/bash’: No such file or directoryКак видите, при использовании chroot по умолчанию сам bash не виден из этой изолированной среды, поэтому войти невозможно. И даже если скопировать /bin/bash, зависимые библиотеки, необходимые bash, не могут быть доступны из этой изолированной среды, поэтому выполнить его не получится.
Это Change Root. Меняется только корень.
sudo mkdir /mnt/arch
sudo pacstrap /mnt/arch base linux linux-firmware man-db vim
sudo arch-chroot /mnt/archТолько с вышеуказанным:
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 ~]# Если после этого выполнить ps -ef в этой среде chroot, вы увидите, что процессы хост-машины видны из этого chroot.
В случае с jail в FreeBSD, он дополнительно усилен, и процессы, сеть, пользовательское пространство и т.д. также изолированы. Кроме того, сами cgroups в Linux были разработаны и реализованы инженерами Google и развились до нынешних cgroups v2. Причина, по которой я вообще использую Docker, заключается исключительно в целях, отличных от легко изменяемых ограничений ресурсов, и jail тоже подошел бы, но почему подобная реализация не сделана в FreeBSD? В лабиринт... Нельзя ли установить ограничения ресурсов с помощью jail? Нет, можно, но почему же...
Текущее состояние Docker на FreeBSD
Он все еще поддерживается, но удивительно устарел.

Что это значит? Поддержка есть, но...
Последние новости о контейнерах FreeBSD #Docker - Qiita
Как указано в этой статье, сейчас он, похоже, не поддерживается.
Более того, эта версия Docker для FreeBSD фактически просто запускает Docker через ядро Linux и, похоже, не является нативной реализацией.
Неужели это невозможно на FreeBSD?
Честно говоря, было бы очень здорово, если бы можно было создать среду jail, полностью совместимую с Docker, просто изменив alias.
Ограничения ресурсов также можно установить, комбинируя их с rctl.
https://codeberg.org/bsdpot/pot
Существуют такие реализации, использующие jail, но в некотором смысле это реализации в экосистеме FreeBSD.
То есть, это можно реализовать как контейнерную среду. Однако проблема при портировании заключается в скриптах сборки, таких как Dockerfile. Можно сказать, что его легко преобразовать в скрипт оболочки для сборки, который можно реализовать с помощью pot, но
FROM
WORKDIR
COPY
ARG
ENV
RUN
EXPOSE ...это неизбежный язык сборки (?) на многоуровневой системе, подобной этой.
Другими словами, поскольку менеджеры пакетов также отличаются, полностью автоматическое преобразование кажется довольно сложным. Похоже, potfile может это обрабатывать, по крайней мере.
https://github.com/ebarriosjr/potMachine/blob/master/Potfiles/Potfile