Estou usando o porttainer e não consigo gerenciar pontos de extremidade remotos. Tentei usar a linha de comando para conectar-se aos nós do docker remoto, mas recebi uma mensagem Cannot connect to the Docker daemon at tcp://<remote_ip>:<port>. Is the docker daemon running?
.
Sim, eles estão correndo. Eu me adicionei ao grupo de janelas de encaixe e posso acessar a janela de encaixe por SSHing nos nós. No entanto, não consigo acessar nenhum nó do docker remotamente.
Modifiquei /etc/default
para adicionar / descomentarDOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
Eu também modifiquei /etc/init.d/docker
e /etc/init/docker.conf
incluí DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
.
Reiniciei o serviço docker, desconectado e conectado várias vezes no processo, mas ainda não consigo me conectar ao nó remoto. Não consigo nem me conectar ao nó local passando o IP.
O que eu perdi? Qual configuração em qual arquivo expõe a API sobre TCP?
user@hostname:~$ docker -H tcp://<REMOTE_IP>:2375 info
Cannot connect to the Docker daemon at tcp://<REMOTE_IP>:2375. Is the docker daemon running?
user@hostname:~$ docker -H tcp://127.0.0.1:2375 info
Cannot connect to the Docker daemon at tcp://127.0.0.1:2375. Is the docker daemon running?
user@hostname:~$ docker -H tcp://<LOCAL_IP>:2375 info
Cannot connect to the Docker daemon at tcp://<LOCAL_IP>:2375. Is the docker daemon running?
user@hostname:~$
Edit:
Running ps aux | grep -i docker
retorna isso -
root 3581 0.1 0.2 596800 41540 ? Ssl 04:17 0:35 /usr/bin/dockerd -H fd://
root 3588 0.0 0.0 653576 14492 ? Ssl 04:17 0:18 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc
ss -ntl
ps aux
na minha resposta, se isso ajudar.Respostas:
Encontrei uma solução graças ao post de Ivan Krizsan .
Eu tive que editar
/lib/systemd/system/docker.service
no meu sistema Ubuntu 16.04.2 LTS para modificar a linhaentão
e tudo funcionou :-). A próxima etapa é descobrir como proteger o formulário do daemon do docker que está sendo invadido.
fonte
systemctl edit docker.service
e systemctl criarão um novo arquivo com suas edições. Isso impede que uma atualização limpe suas alterações. O SystemD mesclará os dois arquivos em tempo de execução. Bom documento aqui: digitalocean.com/community/tutorials/…ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:4243
-H tcp://
cenário por si só, sem a-H fd://
definição, eu não posso emitir e comandos do cliente, por exemplo .., info janela de encaixe, versão janela de encaixe, etc.O diretório / etc / default é onde os mantenedores da distribuição colocam seus arquivos de configuração. Se você instalar o docker diretamente dos repositórios do Docker, esse diretório não será usado.
O diretório / lib / systemd é onde os pacotes instalam seus arquivos systemd e sobrescrevem todas as alterações na atualização. Se você usar isso, suas alterações serão perdidas.
Para fazer suas próprias alterações em um arquivo de unidade systemd que persista, você pode criar um arquivo de unidade em /etc/systemd/system/docker.service.d/, por exemplo, aqui está o meu /etc/systemd/system/docker.service padrão. d / override.conf:
Essa substituição simplesmente desativa todos os sinalizadores de linha de comando para o daemon dockerd do systemd. Uma vez feito, você pode substituir todas as configurações do /etc/docker/daemon.json que são usadas pelo docker e, dependendo da configuração, podem ser recarregadas sem reiniciar o daemon. Por exemplo, aqui está um exemplo /etc/docker/daemon.json:
Para seus propósitos, você só precisa da linha existente para definir os hosts.
Uma parte extremamente importante do arquivo de configuração acima são as configurações de TLS. Se você não configurar o TLS mútuo entre cliente e servidor e abrir o docker para escutar na rede, estará executando o equivalente a um servidor de telnet aberto com logins raiz permitidos sem senha. Se você preferir ssh sobre telnet, ou se preferir ter uma senha para sua conta root, deverá configurar o TLS.As portas da API do docker são frequentemente verificadas na Internet e você encontrará malware instalado em seu host em pouco tempo, se pular esta etapa de configuração.
Detalhes completos sobre como configurar as chaves TLS para cliente e servidor podem ser encontrados em: https://docs.docker.com/engine/security/https/
fonte
Se você não deseja reconfigurar e reiniciar o daemon do docker, pode simplesmente conectar o soquete unix a um soquete TCP usando
ncat
(donmap
pacote):Como alternativa, você pode usar o socat ou outras ferramentas .
fonte
nohup
e&
Há uma documentação oficial que descreve como configurar onde o daemon do Docker escuta conexões .
Configurando o acesso remoto com o arquivo de unidade systemd
Use o comando sudo systemctl edit docker.service para abrir um arquivo de substituição para docker.service em um editor de texto.
Adicione ou modifique as seguintes linhas, substituindo seus próprios valores.
Salve o arquivo.
Recarregue a configuração systemctl.
Reinicie o Docker.
Verifique se a alteração foi respeitada revisando a saída do netstat para confirmar se o dockerd está escutando na porta configurada.
Configurando o acesso remoto com
daemon.json
Defina a matriz de hosts no /etc/docker/daemon.json para conectar-se ao soquete UNIX e a um endereço IP, da seguinte maneira:
Reinicie o Docker.
Verifique se a alteração foi respeitada revisando a saída do netstat para confirmar se o dockerd está escutando na porta configurada.
O cliente do Docker respeitará a
DOCKER_HOST
variável de ambiente para definir o-H
sinalizador para o cliente. Use um dos seguintes comandos:ou
fonte