Quais são as principais diferenças entre cadeias no FreeBSD e Docker no Linux? Um é consideravelmente mais seguro ou mais performant do que o outro? As cadeias são muito mais antigas do que as instâncias do Docker, portanto, o próprio código pode ser considerado mais seguro. Mas as prisões nunca "pegaram", então talvez não sejam tão boas quanto as instâncias do Docker? Ou isso é só porque o Linux é muito mais popular que o FreeBSD?
Vou abordar alguns dos aspectos das cadeias do FreeBSD e do Linux Docker, de como eles são semelhantes e como são diferentes.
- ambos têm o mesmo objetivo: é uma implementação de virtualização leve, quando você executa o aplicativo em um compartimento separado e isolado sob o mesmo kernel, e aqui as semelhanças terminam e as diferenças começam
- Docker é uma ferramenta que é usada principalmente para executar imagens binárias preparadas que se pode obter de vários repositórios públicos ou privados. A maioria das pessoas o usa dessa maneira. Menos pessoas constroem seus próprios e fazem upload para esses repositórios.
- As prisões do FreeBSD são mais parecidas com o LXC no Linux: é um método de criar seu contêiner do zero. Você cria, instala o software nele , e isso é praticamente tudo - ele pode ser tratado como um FreeBSD dentro do FreeBSD. Não há uma maneira fácil de exportar esse contêiner como uma única peça de software, como no Docker. Então, praticamente todas as pessoas que usam o FreeBSD, au contraire, sempre constroem seu próprio pedaço de FreeBSD dentro de um contêiner do zero (ou seja, do sistema base instalado), instalando software do sistema de Portas do FreeBSD ou do código-fonte. As prisões do FreeBSD, portanto, são menos amigáveis e têm maior custo de uso inicial.
- da mesma forma que os contêineres LXC são persistentes, as cadeias do FreeBSD também são persistentes. Todas as mudanças permanecem intactas entre as botas. Como eu disse, é apenas um pedaço de Sistema Operacional dentro do mesmo sistema operacional (embora as versões do software userland possam diferir até que o ABI seja mantido no kernel do FreeBSD). Isso significa que você não pode cometer as mudanças - elas são cometidas assim que são criadas.
- de todos os itens acima, é óbvio por que os contêineres do FreeBSD não podem ter sua camada de orquestração semelhante, como o Docker: não há publicação de portas, não há volumes, não há links ou meta-conexões entre cadeias diferentes. Apenas as interfaces que o sistema operacional em rede oferece: soquetes de rede, soquetes unix, pontos de montagem comuns.
- não há limitações, é claro, sobre quem pode se comunicar com quem dentro das prisões do FreeBSD, pois não há nenhuma no Docker.
- você pode executar imagens Docker nativas no FreeBSD, porque há pelo menos suporte parcial do docker no FreeBSD, mas, como o Linux é gratuito, eu aconselho fortemente contra ele (e eu realmente e profundamente amo o FreeBSD), porque eles serão executados através da camada de compatibilidade do Linux (fornecida com um módulo de kernel do FreeBSD) que fornece algumas limitações conhecidas.