Eu tenho um contêiner docker com o aplicativo js dentro. Funciona bem em qualquer localhost, mas quando tento executá-lo em um servidor remoto, ele não tem conexão com a internet e trava na primeira consulta. Tentei várias formas de executar, mas nenhuma opção resolveu esse problema. Alguma sugestão em como consertar?
executar o comando é:
docker run --network=host --shm-size=1g --rm -u root --dns 8.8.8.8 --cap-add=NET_ADMIN --cap-add=SYS_ADMIN --device=/dev/net/tun --privileged --sysctl net.ipv6.conf.all.disable_ipv6=0 containerID
Não consigo pingar endereços IP e resolver nomes do shell de contêineres
Sugiro depurar isso passo a passo e simplificar seu comando docker durante a depuração.
Posso dizer que seu contêiner não inicia. O que há nos logs do contêiner?
Portanto, se eu depurar isso, primeiro removeria todos os parâmetros e executaria /bin/bash como um comando de execução em um modo interativo e verificaria se a Internet está disponível no contêiner:
(containerID é na verdade o nome da imagem ou ID da imagem)
se estiver tudo bem, sugiro adicionar outros parâmetros um por um e verificar em qual parâmetro você está com problema.
Outra coisa é que parece ter o
--net=host
e--sysctl net.ipv6.conf.all.disable_ipv6=0
não é realmente a coisa certa, porque nesse caso você alterará os parâmetros da máquina host, porque não possui uma pilha de rede separada como quando executa sem--net=host
.Acho que os possíveis motivos do erro são: - seu provedor de VM não permite alterar net.ipv6.conf.all.disable_ipv6=0 - você tem problemas com seus pacotes instalados no Dockerfile (você o usa para criar o contêiner, ou apenas carregue a própria imagem do contêiner?). você deve examinar os logs do docker (provavelmente você precisa removê
--rm
-los para obtê-los) - você tem alguns erros nas configurações do seu aplicativo, por exemplo, endereços IP codificados ou nomes DNS, que não existem em um ambiente do lado do servidor.Acredito que seguindo estas etapas você pode encontrar o motivo real e resolver o problema. Boa sorte.