Ich möchte den folgenden Infrastrukturfluss erstellen:
Wie kann das mit Docker erreicht werden?
quelle
Ich möchte den folgenden Infrastrukturfluss erstellen:
Wie kann das mit Docker erreicht werden?
Zunächst müssen Sie einen SSH-Server in den Images installieren, in die Sie ssh-in möchten. Sie können ein Basis-Image für Ihren gesamten Container verwenden, auf dem der SSH-Server installiert ist. Dann müssen Sie nur noch jeden Container ausführen, der den ssh-Port (Standard 22) einem der Ports des Hosts (Remote Server in Ihrem Image) zuordnet -p <hostPort>:<containerPort>
. dh:
docker run -p 52022:22 container1
docker run -p 53022:22 container2
Wenn dann von außen auf die Ports 52022 und 53022 des Hosts zugegriffen werden kann, können Sie mithilfe der IP-Adresse des Hosts (Remote Server), auf der der Port in ssh mit angegeben ist, direkt zu den Containern ssh -p <port>
. Dh:
ssh -p 52022 myuser@RemoteServer
-> SSH zu container1
ssh -p 53022 myuser@RemoteServer
-> SSH zu container2
Hinweis : Diese Antwort bewirbt ein Tool, das ich geschrieben habe.
Die hier ausgewählte Antwort schlägt vor, in jedem Image einen SSH-Server zu installieren. Konzeptionell ist dies nicht der richtige Ansatz ( https://docs.docker.com/articles/dockerfile_best-practices/ ).
Ich habe einen containerisierten SSH-Server erstellt, an den Sie sich an jeden laufenden Container halten können. Auf diese Weise können Sie mit jedem Container Kompositionen erstellen. Die einzige Voraussetzung ist, dass der Container Bash hat.
Im folgenden Beispiel wird ein SSH-Server gestartet, der an Port 2222 des lokalen Computers verfügbar gemacht wird.
Weitere Hinweise und Dokumentationen finden Sie unter: https://github.com/jeroenpeeters/docker-ssh
quelle
Diese Dateien öffnen sshd erfolgreich und führen den Dienst aus, sodass Sie ssh lokal einbinden können. (Sie benutzen Cyberduck, nicht wahr?)
Dockerfile
Supervisord.conf
Startdämon erstellen / ausführen / in Shell springen.
quelle
Ich denke es ist möglich. Sie müssen lediglich einen SSH-Server in jedem Container installieren und einen Port auf dem Host verfügbar machen. Das größte Ärgernis wäre, die Zuordnung von Port zu Container beizubehalten / sich daran zu erinnern.
Ich muss mich jedoch fragen, warum Sie dies tun möchten. SSH'ng in Container sollte selten genug sein, dass es kein Problem ist, ssh zum Host zu senden und dann Docker Exec zu verwenden, um in den Container zu gelangen.
quelle
Erstellen Sie ein Docker-Image mit
openssh-server
vorinstalliertem:Dockerfile
Erstellen Sie das Bild mit:
Führen Sie einen
test_sshd
Container aus:Ssh zu Ihrem Container:
Quelle: https://docs.docker.com/engine/examples/running_ssh_service/#build-an-eg_sshd-image
quelle
ssh root@localhost -p <ssh_host_port>
die Anweisungen hier zu