A situação:
Eu desenvolvo em um Windows VDI que usa o WSL para executar o docker e, na verdade, estou usando um daemon do docker remoto em execução em um servidor Red Hat. Localmente, tenho a DOCKER_HOST
variável configurada para o caminho correto para meu daemon do docker ( tcp://<userid>@<my server running the remote docker daemon>
), mas essa variável de ambiente só é reconhecida imediatamente após ser configurada.
O que quero dizer com isso é que, agora, se eu executar um comando docker, recebo o Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
erro, mas se eu atribuir DOCKER_HOST
a si mesmo com $ export DOCKER_HOST=$DOCKER_HOST
, os comandos docker futuros agora reconhecerão o daemon remoto para o qual estou direcionando com essa variável.
Eu adicionei essa atribuição DOCKER_HOST
no meu ~/.bashrc
, e posso ver que ela está definida corretamente quando reinicio o shell e executo $ echo $DOCKER_HOST
.
Comportamento esperado:
Espero que os comandos do docker se refiram à DOCKER_HOST
variável definida dentro ~/.bashrc
de , cuja presença é confirmada com$ echo $DOCKER_HOST
Realidade:
O Docker não reconhece esta variável/valor desta variável, a menos que seja definido na sessão do shell ativo. Eu literalmente tenho que atribuir a variável a si mesma para que o docker a reconheça (por exemplo, export DOCKER_HOST=$DOCKER_HOST
) e só então os comandos do docker serão executados no daemon remoto.
Minhas perguntas:
Por que preciso redefinir a DOCKER_HOST
variável para que o docker possa reconhecê-la?
Se estou fazendo isso incorretamente, qual é a maneira correta?
Estou aberto a ouvir que estou no lugar errado com minha pergunta. Pude ver que isso é um problema do Linux/WSL ou um problema com o próprio docker.