Chciałbym utworzyć następujący przepływ infrastruktury:
Jak można to osiągnąć za pomocą Dockera?
źródło
Chciałbym utworzyć następujący przepływ infrastruktury:
Jak można to osiągnąć za pomocą Dockera?
Najpierw musisz zainstalować serwer SSH na obrazach, do których chcesz ssh-do. Możesz użyć obrazu podstawowego dla całego kontenera z zainstalowanym serwerem ssh. Następnie wystarczy uruchomić każdy kontener mapujący port ssh (domyślnie 22) do jednego z portów hosta (serwer zdalny na obrazie), używając -p <hostPort>:<containerPort>
. to znaczy:
docker run -p 52022:22 container1
docker run -p 53022:22 container2
Następnie, jeśli porty 52022 i 53022 hostów są dostępne z zewnątrz, możesz bezpośrednio ssh do kontenerów za pomocą adresu IP hosta (serwera zdalnego), określając port w ssh za pomocą -p <port>
. To znaczy:
ssh -p 52022 myuser@RemoteServer
-> SSH do kontenera1
ssh -p 53022 myuser@RemoteServer
-> SSH do kontenera 2
Uwaga : ta odpowiedź promuje napisane przeze mnie narzędzie.
Wybrana tutaj odpowiedź sugeruje zainstalowanie serwera SSH w każdym obrazie. Koncepcyjnie nie jest to właściwe podejście ( https://docs.docker.com/articles/dockerfile_best-practices/ ).
Utworzyłem kontenerowy serwer SSH, który możesz „przykleić” do dowolnego działającego kontenera. W ten sposób możesz tworzyć kompozycje z każdym pojemnikiem. Jedynym wymaganiem jest to, aby kontener miał bash.
Poniższy przykład spowoduje uruchomienie serwera SSH udostępnionego na porcie 2222 komputera lokalnego.
Aby uzyskać więcej wskazówek i dokumentacji, zobacz: https://github.com/jeroenpeeters/docker-ssh
źródło
Te pliki pomyślnie otworzą sshd i uruchomią usługę, dzięki czemu możesz ssh lokalnie. (używasz cyberkaczki, prawda?)
Dockerfile
supervisord.conf
zbudować / uruchomić uruchomić demona / wskoczyć do powłoki.
źródło
Myślę, że to możliwe. Wystarczy zainstalować serwer SSH w każdym kontenerze i udostępnić port na hoście. Główną przeszkodą byłoby utrzymanie / zapamiętanie mapowania portu do kontenera.
Muszę jednak zapytać, dlaczego chcesz to zrobić. SSH'ng do kontenerów powinno być na tyle rzadkie, że nie jest problemem ssh do hosta, a następnie użyj docker exec, aby dostać się do kontenera.
źródło
Utwórz obraz Dockera z
openssh-server
preinstalowanym:Dockerfile
Zbuduj obraz używając:
Uruchom
test_sshd
kontener:Ssh do twojego kontenera:
Źródło: https://docs.docker.com/engine/examples/running_ssh_service/#build-an-eg_sshd-image
źródło
ssh root@localhost -p <ssh_host_port>
postępować zgodnie z instrukcjami tutaj