O Apache não roda dentro do container

1

Estou executando o Arch Linux e, além disso, o Ubuntu dentro de um contêiner systemd-nspawn. De repente, estou com problemas para iniciar o apache (dentro do contêiner).

Tudo estava funcionando bem há alguns dias, mas agora não está. Não sei se uma atualização dentro ou fora do contêiner alterou alguma coisa.

Dentro do contêiner, vejo o seguinte:

root@container:~# apachectl -k start
/usr/sbin/apachectl: 99: ulimit: error setting limit (Operation not permitted)
Setting ulimit failed. See README.Debian for more information.
(13)Permission denied: AH00072: make_sock: could not bind to address [::]:80
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
Action '-k start' failed.
The Apache error log may have more information.

Eu verifiquei usando lsof e netstat e nada mais está sendo executado nas portas 80/443. Além disso, o que é esse erro "ulimit"? O que está acontecendo ai?

Eu fiz use sudo systemctl edit [email protected] para editar as configurações para desabilitar a rede privada e habilitar algumas montagens de ligação:

[Service]
ExecStart=
ExecStart=/usr/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest -U --settings=override --machine=%i \
        --bind-ro=/etc/resolv.conf:/etc/resolv.conf \
        --bind=/home/nticompass/Code/website:/opt/website

Sim, a configuração do apache dentro do contêiner é configurada para usar /opt/website como raiz. Eu tenho o bind montado para que eu possa usar o meu IDE no meu sistema operacional principal (Arch Linux) para editar os arquivos e, em seguida, fazer com que o contêiner possa acessá-los (sem precisar copiá-los / transferi-los).

Não sei o que fazer aqui. Alguma coisa mudou em uma atualização? Preciso atualizar uma configuração no meu Arch Linux? Por que o contêiner não pode acessar as portas? O que é esse erro "ulimit"?

EDIT: Aqui está uma lista de pacotes que foram atualizados / instalados na semana passada no meu sistema Arch Linux (principal): link

    
por Rocket Hazmat 19.12.2017 / 05:55

2 respostas

0

Este problema foi causado por uma alteração no kernel do Linux no Arch Linux. Desde o kernel 4.14.5, a opção -U (que é um padrão para systemd-nspawn ), cria um contêiner unprivileged . Costumava criar um privilégio, mas não mais.

Isto é o que estava bloqueando o apache de abrir as portas 80 e 443.

A solução é executar sudo systemctl edit [email protected] e remover a opção -U . Eu também tive que editar /etc/systemd/nspawn/my-container.nspawn e adicionar o seguinte:

[Exec]
PrivateUsers=off

Graças a: link

    
por 20.12.2017 / 21:35
0

Não podemos saber se uma atualização mudou alguma coisa, porque não há informações sobre atualizações na sua pergunta. Precisamos saber quais atualizações foram instaladas no sistema antes de pararem de funcionar.

O erro ulimit e a falha de inicialização do Apache provavelmente são causados por privilégios insuficientes.

Então, definitivamente, algo mudou como seu contêiner é iniciado.

    
por 19.12.2017 / 08:22