Detailliertes Tutorial zum PyCharm- und SSH-Remote-Access-Server-Docker

Detailliertes Tutorial zum PyCharm- und SSH-Remote-Access-Server-Docker

Hintergrund: Einige Experimente müssen auf dem Server durchgeführt werden. Um den Code auf dem Remote-Server schnell und bequem lokal zu debuggen, ist daher eine direkte Verbindung zwischen dem lokalen und dem Remote-Server erforderlich. Allerdings ist Docker zu diesem Zeitpunkt bereits auf vielen Servern installiert und es ist normalerweise erforderlich, den Code in Docker zu debuggen. Daher wird in diesem Artikel hauptsächlich die Konfigurationsmethode für den Remotezugriffsserver Docker beschrieben.

Benötigtes Werkzeug und Anleitung:

  • Ein Remote-Server
  • Pycharm: integriertes Entwicklungstool, lokal installiert
  • ssh: Remote-Zugriffstool, sowohl lokale als auch Remote-Server sind erforderlich
  • Docker: Container auf einem Remote-Server

1. Konfigurieren Sie den Remote-Server-Docker

Schritt 1: Kaufen und konfigurieren Sie einen Server (überspringen, wenn Sie bereits einen Server haben)
Sie können einen CentOS-Server von Serveranbietern wie Alibaba Cloud oder Tencent Cloud kaufen oder einen von einem Unternehmen oder einer Schule bereitgestellten Server verwenden. Beachten Sie jedoch, dass Sie vor dem Zugriff auf den Server des Unternehmens oder der Schule eine Verbindung zum VPN herstellen müssen, wenn auf den Server in einer VPN-Umgebung zugegriffen werden muss.

Schritt 2: Docker installieren (überspringen, wenn Sie Docker bereits haben)

sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

Für Einzelheiten verweisen wir auf die Referenzen am Ende des Artikels [2].

Hinweis: Der Befehl sudo wird mit dem höchsten Root-Recht ausgeführt. Wenn das aktuelle Konto root ist, ist der Befehl sudo nicht erforderlich.

Schritt 3: Ziehen Sie das Bild

Die offizielle Image-Website ist Docker Hub. Dort finden Sie Images, die Ihren Produktionsanforderungen entsprechen. Nehmen wir PyTorch als Beispiel und ziehen das Bild:

sudo docker pull pytorch/pytorch

Sie können die entsprechenden Dateien herunterladen und die abgerufenen Bilder mit dem folgenden Befehl anzeigen:

sudo Docker-Bilder

Für Einzelheiten verweisen wir auf die Referenzen am Ende des Artikels [6].

Schritt 4: Einen Container erstellen

Nachdem Sie das Image erhalten haben, müssen Sie einen Container basierend auf dem Image instanziieren. Hier wird der Befehl „run“ verwendet, um den Container zu instanziieren:

ssudo docker run -p [selbst gewählte Portnummer]:22 --gpus all -itd --name [selbst gewählter Name] -v [Hostverzeichnis (lokales Verzeichnis)]:[benutzerdefiniertes Verzeichnis im erstellten Container] /bin/bash

Führen Sie den obigen Befehl aus, um einen Container zu instanziieren. Die relevanten Parameter sind:

  • -p [optionale Portnummer]:22: Ordnen Sie den Container der entsprechenden Portnummer zu und verknüpfen Sie ihn zum Abhören mit Port 22.
  • –gpus all: gibt an, dass alle im Hostcomputer enthaltenen GPUs im instanziierten Container verwendet werden können;
  • -i: STDIN offen halten;
  • -t: ein Pseudoterminal zuweisen;
  • -d: Im Hintergrund ausführen
  • –name [geben Sie sich einen Namen]: Um sich nicht lange und komplizierte Container-IDs merken zu müssen, können Sie in der Regel einen Namen für den Container festlegen. Achten Sie darauf, nicht den gleichen Namen wie einen bereits vorhandenen zu verwenden.
  • -v [Hostverzeichnis (lokal)]:[benutzerdefiniertes Verzeichnis im Container]: Um die Dateien im Container mit dem Host synchronisiert zu halten, können Sie diesen Parameter verwenden. Beachten Sie, dass das benutzerdefinierte Verzeichnis im Container ein absoluter Pfad sein muss.

Darüber hinaus können -i , -t und -d zusammen geschrieben werden, zum Beispiel -it , -itd .
Beispielsweise der Befehl:

sudo docker run -p 8848:22 --gpus all -itd --name wjn -v /home/gm/wangjianing/docker:/wjn pytorch/pytorch /bin/bash

Es zeigt an, dass das instanziierte Image pytorch/pytorch ein Container ist, der die Host-Portnummer 8848 belegt und mit SSH-Port 22 verbunden ist. Es kann alle GPUs verwenden. Der Name ist „wjn“. Die Hostadresse „/home/gm/wangjianing/docker“ ist mit dem Verzeichnis „/wjn“ im Container verknüpft und verwendet /bin/bash als Befehlsskript.

Nach der Erstellung können Sie alle instanziierten Container anzeigen

sudo docker ps

Schritt 5: Öffnen Sie den Port

Wenn der Port durch eine Firewall geschützt ist, müssen Sie ihn selbst öffnen:

sudo /sbin/iptables -I INPUT -p tcp --dport 8848 -j AKZEPTIEREN

Schritt 6: Starten Sie den Container

Starten Sie den Container, sodass er ausgeführt wird:

sudo docker start [Container-ID oder Ihr eigener Name]

Wenn beispielsweise die gerade erstellte Containernummer „5621fade441e“ und der Name „wjn“ ist, können Sie Folgendes ausführen:

sudo docker start 5621fade441e

oder

sudo docker start wjn

Nach dem Start können Sie:

sudo docker ps -a

Zeigen Sie alle gestarteten und laufenden Container an, wie in der Abbildung dargestellt:

Bildbeschreibung hier einfügen

Hinweis: An dieser Stelle sollten Sie die relevanten Informationen des Containers sehen können. Achten Sie besonders auf das PORTS-Attribut. Die Port-Informationen werden benötigt, um zu bestimmen, ob der aktuell erstellte Container über den Port erreichbar ist. Ohne diese Informationen kann der Remote-Zugriff auf den Container nicht abgeschlossen werden. Derzeit kann der Port des erstellten Containers nicht direkt geändert werden, er kann also nur neu erstellt werden.

Schritt 7: Den Container betreten

Um den Container zu betreten, verwenden Sie den Befehl:

sudo docker exec -it [Container-ID oder Ihr eigener Name] /bin/bash

2. Containerkonfiguration ssh

Ich dachte, dass ich nach dem Erstellen von Docker direkt über SSH auf den Container zugreifen könnte, aber später stellte ich fest, dass ich den Container aufrufen und eine Reihe von SSH-Konfigurationen durchführen musste. Die wichtigsten Schritte sind wie folgt:

Schritt 8: Installieren Sie ssh :

Geben Sie den neu erstellten Container ein und führen Sie den folgenden Befehl aus:

passendes Update
apt install -y openssh-server

Erstellen Sie anschließend einen Konfigurationsordner und nehmen Sie die erforderlichen Konfigurationen vor:

mkdir /var/run/sshd
echo 'root:passwd' | chpasswd

Beachten Sie, dass root hier den Benutzernamen angibt, auf den später remote zugegriffen werden soll, und passwd das Zugriffskennwort ist, das Sie selbst festlegen können. Ich habe es beispielsweise wie folgt festgelegt:

echo 'root:123456' | chpasswd

Schritt 9: Anmeldeberechtigungen festlegen :

Führen Sie die folgenden drei Befehlszeilen aus, um Berechtigungen festzulegen

sed -i ‚s/PermitRootLogin prohibit-password/PermitRootLogin yes/‘ /etc/ssh/sshd_config
sed 's@session\serforderlich\spam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
echo "export VISIBLE=now" >> /etc/profile

Schritt 10: Ändern Sie die SSH-Konfigurationsdatei

Nach Abschluss des zweiten Schritts kann der Blogger immer noch keine Remoteverbindung herstellen. Nach einer Abfrage stellte er fest, dass er die entsprechenden Konfigurationsdateien ändern musste:
Führen Sie den folgenden Befehl aus, um die SSH-Konfigurationsdatei zu öffnen:

vim /etc/ssh/sshd_config

Wenn vim nicht installiert ist, führen Sie Folgendes aus:

apt install vim

Ändern Sie die Datei nach dem Öffnen:
AddressFamily beliebig vorherige # löschen ändern PermitRootLogin ja vorherige # löschen ändern PasswordAuthentication ja vorherige # löschen

Führen Sie im Vim-Editor den folgenden Befehl zum Speichern und Beenden aus:

:wq

Starten Sie abschließend den SSH-Dienst neu:

Dienst SSH neu starten

Für Einzelheiten wird auf die Referenzen [1] und [3] verwiesen.

3. SSH-Test

Nach Abschluss der Konfiguration sollten die Servereinstellungen vollständig sein. Sie können einen einfachen Test durchführen. Führen Sie beispielsweise (1) den Befehl auf dem Hostcomputer aus, um den aktuellen Port anzuzeigen. Sie können sehen, dass Port 8848 verfügbar ist.

sudo netstat -ntlp 

Bildbeschreibung hier einfügen

(2) Sie können auch Befehle auf dem Hostcomputer ausführen, um zu überprüfen, ob für den aktuellen Container eine entsprechende Portzuordnungsbeziehung besteht:

sudo docker port [Container-ID oder Ihr eigener Name] 22

Beispielsweise gibt der Blogger nach der Ausführung 0.0.0.0:8848 zurück, was auf Erfolg hinweist.

(3) Betreten Sie den Container und führen Sie aus:

python3

Rufen Sie die Python-Umgebung auf und führen Sie sie aus

Taschenlampe importieren
drucken(torch.cuda.is_available())

Wenn True zurückgegeben wird, bedeutet dies, dass der Docker die GPU verwenden kann.

(4) Versuchen Sie den Fernzugriff. Auf jedem angeschlossenen Rechner (wenn Sie sich in einem LAN befinden, müssen Sie eine Verbindung zu einem VPN herstellen):

ssh [Benutzername, der in Schritt 8 erstellt wurde]@[Ihre Serveradresse] -p [von Ihnen selbst definierte Portnummer]

Wenn die Kennwortabfrage angezeigt wird, bedeutet dies, dass die Verbindung erfolgreich war. Nach Eingabe des Kennworts können Sie direkt den entsprechenden Container aufrufen. Beispielsweise führt der Blogger aus:

ssh [email protected] -p 8848

Die folgenden Informationen werden angezeigt und geben an, dass die Verbindung erfolgreich war.

Bildbeschreibung hier einfügen

4. Pycharm-Test

Wenn Sie pycharm verwenden, um direkt auf den Remote-Server-Docker zuzugreifen, können Sie relevante Einstellungen in pycharm vornehmen:

Schritt 11: pycharm installieren (überspringen, falls bereits installiert)

Sie müssen die professionelle Version von pycharm installieren. Nach der Installation können Sie den Aktivierungscode verwenden oder direkt auf die offizielle Website gehen, um ein Konto mit einer Studenten-E-Mail-Adresse zu registrieren und es ein Jahr lang kostenlos zu nutzen. Geben Sie nach der Installation pycharm ein

Für Einzelheiten verweisen wir auf die Referenzen am Ende des Artikels [7].

Schritt 12: SSH einrichten

Klicken Sie wie unten gezeigt der Reihe nach, um das Menü aufzurufen:

Bildbeschreibung hier einfügen

Fügen Sie dann eine neue Verbindung hinzu und klicken Sie von links nach rechts:

Bildbeschreibung hier einfügen

Rufen Sie die SSH-Bearbeitungsoberfläche auf und geben Sie die Konfigurationsinformationen ein:

Bildbeschreibung hier einfügen

Klicken Sie auf "Verbindung testen", um sie zu testen. Wenn sie erfolgreich ist, bedeutet dies, dass pycharm auch eine Verbindung zum Remote-Container herstellen kann:

Bildbeschreibung hier einfügen

Kehren Sie zur vorherigen Seite zurück, wählen Sie das konfigurierte SSH aus und wählen Sie dann das spezifische Verzeichnis im Container aus, mit dem PyCharm verknüpft werden soll. Beispielsweise wählt der Blogger beim Erstellen des Containers direkt das mit dem Domänenhost verknüpfte Verzeichnis /wjn als Speicherort aus, an dem PyCharm Aktualisierungen und Uploads durchführen kann, und speichert es dann.

Bildbeschreibung hier einfügen

Zu diesem Zeitpunkt sind alle Konfigurationsarbeiten abgeschlossen und Sie können das Projekt im Server-Docker in PyCharm frei debuggen.

Quellen:

[1] Das Passwort für die Remote-Anmeldung beim SSH-Client auf dem Linux-Server ist immer falsch [2] Docker-Installation [3] PyCharm + Docker: Erstellen Sie den komfortabelsten Alchemieofen für Deep Learning [4] Pycharm-Remoteverbindungsserver zum Ausführen von Code und Debuggen [5] Lösen Sie das Problem der Speichererschöpfung während der PyTorch-GPU-Berechnung [6] Verwendung von Docker-Images [7] Wie Studenten alle Funktionen der professionellen Version von Pycharm kostenlos nutzen können

Dies ist das Ende dieses Artikels über das ausführliche Tutorial zum PyCharm- und SSH-Fernzugriff auf den Docker-Server. Weitere relevante Inhalte zum PyCharm-Fernzugriff auf Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Implementierung des Docker-Remotezugriffs
  • So aktivieren Sie den Fernzugriff in Docker

<<:  Detaillierte Erklärung der integrierten Methoden des Javascript-Arrays

>>:  So konvertieren Sie eine Spalte mit durch Kommas getrennten Werten in Spalten in MySQL

Artikel empfehlen

MariaDB-Remote-Login-Konfiguration und Problemlösung

Vorwort: Der Installationsvorgang wird nicht im D...

CSS3 verwendet Animationsattribute, um coole Effekte zu erzielen (empfohlen)

animation-name Animationsname, kann mehrere Werte...

Telnet wird im Alpine-Image zu busybox-extras verschoben

Das Telnet im Alpine-Image wurde nach Version 3.7...

Vue+Router+Element zur Implementierung einer einfachen Navigationsleiste

Dieses Projekt teilt den spezifischen Code von Vu...

Abkürzungszeichen und Akronymzeichen

Die Tags <abbr> und <acronym> stellen ...

Mehrere Möglichkeiten zum Löschen von Arrays in Vue (Zusammenfassung)

Inhaltsverzeichnis 1. Einleitung 2. Mehrere Mögli...