Eu gostaria de criar o seguinte fluxo de infraestrutura:
Como isso pode ser feito usando o Docker?
fonte
Eu gostaria de criar o seguinte fluxo de infraestrutura:
Como isso pode ser feito usando o Docker?
Primeiramente você precisa instalar um servidor SSH nas imagens que deseja fazer o ssh. Você pode usar uma imagem de base para todo o seu contêiner com o servidor ssh instalado. Então você só precisa executar cada container mapeando a porta ssh (padrão 22) para uma das portas do host (servidor remoto em sua imagem), usando -p <hostPort>:<containerPort>
. ie:
docker run -p 52022:22 container1
docker run -p 53022:22 container2
Então, se as portas 52022 e 53022 do host são acessíveis de fora, você pode fazer ssh diretamente para os contêineres usando o ip do host (servidor remoto) especificando a porta em ssh com -p <port>
. Ie:
ssh -p 52022 myuser@RemoteServer
-> SSH para o container1
ssh -p 53022 myuser@RemoteServer
-> SSH para o container2
Aviso : esta resposta promove uma ferramenta que escrevi.
A resposta selecionada aqui sugere instalar um servidor SSH em cada imagem. Conceitualmente, essa não é a abordagem certa ( https://docs.docker.com/articles/dockerfile_best-practices/ ).
Eu criei um servidor SSH em contêiner que você pode "colar" em qualquer contêiner em execução. Desta forma, você pode criar composições com todos os contêineres. O único requisito é que o contêiner tenha bash.
O exemplo a seguir iniciaria um servidor SSH exposto na porta 2222 da máquina local.
Para obter mais dicas e documentação, consulte: https://github.com/jeroenpeeters/docker-ssh
fonte
Esses arquivos abrirão o sshd com sucesso e executarão o serviço para que você possa ssh localmente. (você está usando o cyberduck, não está?)
Dockerfile
supervisord.conf
para construir / executar iniciar daemon / saltar para o shell.
fonte
Eu acho que é possível. Você só precisa instalar um servidor SSH em cada contêiner e expor uma porta no host. O principal incômodo seria manter / lembrar o mapeamento do porto ao contêiner.
No entanto, tenho que questionar por que você deseja fazer isso. O SSH'ng em contêineres deve ser raro o suficiente para que não seja um incômodo fazer o ssh para o host e depois usar o docker exec para entrar no contêiner.
fonte
Crie uma imagem docker com
openssh-server
pré-instalado:Dockerfile
Construa a imagem usando:
Execute um
test_sshd
contêiner:Ssh para seu contêiner:
Fonte: https://docs.docker.com/engine/examples/running_ssh_service/#build-an-eg_sshd-image
fonte
ssh root@localhost -p <ssh_host_port>
seguir as instruções aqui