Eu tenho uma instância do Amazon EC2 executando o CentOS 7 com o docker instalado. Estou executando contêineres de docker em uma rede de docker personalizada.
Estou tentando acessar uma interface da web de um desses contêineres de janela de encaixe. O comando a seguir funciona quando tento fazer isso no meu mac:
xhost + $my_ip
docker run -d --rm --name firefox --network myNetwork -e DISPLAY=$my_ip:0 -v /tmp/.X11-unix:/tmp/.X11-unix jess/firefox
No entanto, se eu apenas tentar a solução simples e fizer
ssh -Y remote-host docker run -d --rm --name firefox --network myNetwork -e DISPLAY=$my_ip:0 -v /tmp/.X11-unix:/tmp/.X11-unix jess/firefox
Não funciona; provavelmente porque remote-host
não tem acesso $my_ip
.
Este artigo me trouxe mais https://dzone.com/articles/docker-x11-client-via-ssh ao explicar que, quando você usa o encaminhamento X11 com ssh, o ssh está realmente iniciando um 'proxy' na máquina remota que escuta a interface de loopback da máquina remota.
Para que eu possa executar o Firefox de dentro de um contêiner em um host remoto usando este dockerfile:
FROM centos
RUN yum install -y firefox dbus && \
dbus-uuidgen > /var/lib/dbus/machine-id
ENTRYPOINT [ "/usr/bin/firefox" ]
e este comando docker run após a execução ssh -Y remote-host
:
docker run --network host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" firefox
Yay! Mas não exatamente. Se eu mudar de --network host
para --network myNetwork
ele não funcionará mais. Porque, como mencionado acima, o ssh está escutando na interface de loopback da máquina host, à qual o contêiner do docker não tem mais acesso.
Portanto, parece que a única maneira de fazer isso funcionar é se eu descobrir uma maneira de dizer ao ssh para se ligar a uma interface diferente de loopback ao configurar o encaminhamento do X11. Isso é possível?
GatewayPorts
se sim no lado do servidor,sshd_config
se isso funcionaria?