Com base nos comentários, a questão é um pouco diferente do que eu (e talvez outros) esperavam: o uso de "manter" não se relaciona com os pacotes dentro dos contêineres, mas com sua configuração individual.
Isso torna o processo mais difícil, mas ainda é possível. Por exemplo:
Montando os diretórios
Como você disse, você precisará compartilhar uma montagem para os binários (como /usr/bin
), que seria o primeiro passo para garantir que eles possam compartilhar todos os pacotes - isso permitirá que os binários instalados sejam prontamente disponível para todos os outros recipientes.
Você precisa garantir que quando você mount --bind
fizer isso no diretório ROOT
no arquivo /etc/vz/<veid>.conf
apropriado.
Por exemplo, mount --bind /some/mount/point/bin /vz/root/1/bin
Também é essencial que essas montagens estejam limpas (como garantir que elas estejam lá depois que a máquina for inicializada pela primeira vez?). Para fazer isso, o OpenVZ oferece ganchos de início e parada na forma de scripts. Supondo que você esteja trabalhando em /etc/vz/conf
, você pode ter:
-
/etc/vz/conf/<veid>.mount
- este é o gancho inicial: chamado assim que o contêiner estiver sendo executado -
/etc/vz/conf/<veid>.umount
- este é o gancho de parada: chamado assim que o contêiner tiver desligado
Seus nomes são derivados de suas definições técnicas: o OpenVZ monta /vz/private/<veid>
em /vz/root/<veid>
, então é isso que ele está enganchando (assumindo os diretórios padrão).
Configuração
Nos comentários, você perguntou que uma vantagem seria configurar o servidor deles de acordo com o gosto deles (por exemplo, mysql.cnf
ou httpd.conf
/ apache2.conf
). O único problema que pude ver com isso é que você precisa garantir que, ao instalar os pacotes, esses arquivos de configuração estejam configurados dentro de cada um dos contêineres. Você pode tentar compartilhar um compartilhamento de cópia na gravação .
O problema com isso é exatamente quais diretórios para compartilhar. Apache em /etc/httpd
e MySQL em /etc/mysql
- então você precisa ter certeza de que copiou esses arquivos de estoque ou essa idéia não funcionará. Pessoalmente, eu inspecionaria os arquivos .deb
que são instalados pelo administrador do pacote 'global' e extraia os diretórios que não são compartilhados em contêineres individuais. Mas, esta é apenas uma maneira única de fazê-lo - tenho certeza de que existem mais alguns.
Pegadinhas
Uma coisa que eu descobri é que você pode simplesmente substituir os binários e bibliotecas que vêm com um pacote, mas você precisa observar se o gerenciador de pacotes reinicia ou não os serviços depois de instalá-lo
Erro no seu post
Você está montando em private
, você precisa montar no diretório /var/lib/vz/root/1102/bin
(supondo que é para onde a raiz aponta no arquivo .conf
do seu vz).