Ich bin Ishikawa von NTT Docomo. Es ist mein zweites Jahr als Mitglied der Gesellschaft.
In letzter Zeit hat aus verschiedenen Gründen die Anzahl der Unternehmen und Schulen, die empfehlen, von zu Hause aus zu arbeiten und zu Hause zu forschen, zugenommen.
Unter solchen Umständen hat die Anzahl der Menschen, die von zu Hause aus arbeiten, erheblich zugenommen. Wenn ich mich zu diesem Zeitpunkt darauf konzentrieren würde, eine Umgebung für die Fernentwicklung zu schaffen, könnte ich mich recht gut fühlen.
Sie können im Docker-Container auf dem Remote-Server so arbeiten, als würden Sie lokal arbeiten.
Als Voraussetzung für diese Umweltkonstruktion
Wird besorgt.
Es gibt auch eine Methode, die Docker Desktop verwendet, aber ich fand sie etwas problematisch, daher werde ich dieses Mal eine Methode vorstellen, die sie nicht verwendet.
Sie können die folgenden Vorgänge in dem auf dem Remote-Server eingerichteten Docker-Container nur auf dem VS-Code-Bildschirm des lokalen PCs ausführen.
Darüber hinaus können Sie mit Cyberduck Dateien im Container bearbeiten und übertragen und mit GPU berechnen.
Dann, wie man sofort eine Umgebung erstellt.
Stellen Sie zunächst eine SSH-Verbindung auf dem Remote-Server her.
Hier verwenden wir die Verbindung durch RSA-Schlüsselauthentifizierung. (* Die Einstellungsmethode für die RSA-Schlüsselauthentifizierung ist allgemein und in Ordnung, daher wird sie hier weggelassen.)
Erstellen Sie nach dem Anmelden am Remoteserver mit SSH-Verbindung an einem beliebigen Speicherort auf dem Remoteserver eine Docker-Datei wie die folgende. Der Dateiname lautet "Dockerfile".
#Bild der Basis. Das Folgende ist für meine GPU-Umgebung geeignet. Wählen Sie daher die für Sie geeignete aus.
#Für diejenigen, die keine GPU verwenden"ubuntu:18.04"Usw. sind in Ordnung.
FROM nvidia/cuda:10.1-cudnn7-runtime-ubuntu18.04
#Der Name der Person, die es gemacht hat.
LABEL maintainer "dcm_ishikawa"
#Importieren Sie die minimal erforderlichen Elemente und die für die SSH-Verbindung erforderlichen Elemente.
RUN apt-get update --fix-missing && \
apt-get install -y apt-utils && \
apt-get install -y software-properties-common vim curl unzip htop openssh-server wget procps
#Einstellungen für die SSH-Verbindung.
# "password"Bitte ändern Sie den Ort in ein Passwort.
#Ubuntu 18 ist auf verschiedene Arten eingestellt.Es ist eine Arbeit, in 04 eine SSH-Verbindung als Root-Benutzer herzustellen.
RUN mkdir /var/run/sshd
RUN echo 'root:password' | chpasswd
RUN echo '\nPermitRootLogin yes' >> /etc/ssh/sshd_config
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
#GPU-Einstellungen. Nicht erforderlich, wenn Sie keine GPU verwenden.
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES utility,compute
#Einstellungen für die SSH-Verbindung.
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile
#Ermöglicht das Starten einer SSH-Verbindung beim Ausführen.
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
Führen Sie nach dem Erstellen der Docker-Datei den folgenden Befehl an derselben Stelle aus, an der Sie die Docker-Datei gespeichert haben.
docker image build . -t [imagename]
docker run --name [containername] -d -p 10000:22 -p 18888:8888 [imagename]
[Bildname]
ist ein beliebiger Bildname und [Containername]
ist ein beliebiger Containername.
Für -p 10000: 22
ist 10000 eine beliebige Portnummer, wenn der Port an den Remote-Server übergeben wird.
Für -p 18888: 8888
ist 18888 die Portnummer beim Zugriff mit Jupyter Notebook im Browser. Nicht erforderlich, wenn Sie Jupyter Notebook nicht verwenden oder wenn Sie Juoyter Notebook für VS-Code verwenden.
Wenn Sie den folgenden Befehl auf dem Remote-Server eingeben und in den Container einfügen, ist die Containererstellung erfolgreich.
ssh [email protected] -p 10000
Sie werden beim Herstellen einer Verbindung nach einem Passwort gefragt, aber das Passwort ist das in der Docker-Datei beschriebene.
Sobald die Verbindung hergestellt ist, erstellen Sie "~ / .ssh / autorisierte_Tasten" im Container und geben Sie den öffentlichen Schlüssel ein, der auf Ihrem lokalen PC erstellt wurde.
Verwenden Sie anschließend "exit", um die SSH-Verbindung zum Container zu trennen.
Erstellen Sie außerdem "~ / .ssh / authorized_keys" auf dem Remote-Server und geben Sie den öffentlichen Schlüssel ein, der auf dem lokalen PC erstellt wurde.
Damit ist die Arbeit am Remote-Server abgeschlossen. Lassen Sie uns auch die SSH-Verbindung zum Remote-Server trennen.
Dann ist es die Einstellung des lokalen PCs.
Fügen Sie die folgende Beschreibung über den Remote-Server und SSH zum Container auf dem Remote-Server zu ~ / .ssh / config
auf dem lokalen PC hinzu. (Erstellen Sie diese Datei, wenn sie überhaupt nicht vorhanden ist.)
~/.ssh/config
Host Server01 #Beliebiger Verbindungsname
HostName xxx.xxx.xxx.xxx #Remote-Server-Adresse
User username #Benutzername auf dem Remote-Server
IdentityFile ~/.ssh/id_rsa #Der Pfad des erstellten privaten Schlüssels
Host Server01:Container #Beliebiger Verbindungsname
HostName 127.0.0.1
User root
IdentityFile ~/.ssh/id_rsa #Das gleiche wie oben
Port 10000 #Die Portnummer wurde beim Ausführen des Containers übergeben
ProxyCommand ssh -W %h:%p Server01 #Server01 ist derselbe wie der in der ersten Zeile
Installieren Sie als Nächstes die Erweiterung für die SSH-Verbindung von VS Code unter der folgenden URL.
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh-explorer
Starten Sie VSCode und drücken Sie die Fernverbindungstaste links.
Der Verbindungsname des in ~ / .ssh / config
angegebenen Containers wird in der Liste angezeigt. (Hier Server01: Container
)
Klicken Sie auf die Ordnermarkierung rechts neben dem Verbindungsnamen, um die VS-Code-Verbindung zum Container herzustellen.
Auf dem angezeigten Bildschirm befindet sich eine Schaltfläche mit der Aufschrift "Ordner öffnen". Durch Drücken können Sie einen beliebigen Ort im Container auswählen. Wählen Sie also den Ort aus, den Sie dem Arbeitsbereich hinzufügen möchten.
Danke für deine harte Arbeit. Damit ist der Umgebungsaufbau abgeschlossen. Im Folgenden wird beschrieben, wie Sie es verwenden. Siehe.
Sie können die Befehlszeile des Containers öffnen, indem Sie auf die Schaltflächen in der Reihenfolge der Bilder klicken.
Verwenden Sie wget über die Befehlszeile des Containers, um Installationsprogramme wie Anaconda und Miniconda herunterzuladen und zu installieren.
(Beispiel)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
rm Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc
Installieren Sie zunächst die Python-Erweiterung im Container-Arbeitsbereich. ** (* In einigen Fällen ist es nicht standardmäßig installiert!) ** Installation: https://marketplace.visualstudio.com/items?itemName=ms-python.python
Installieren Sie dann Jupyter über die Befehlszeile im Container.
pip install jupyter
Geben Sie den Befehl ein, um Jupyter zu starten.
Öffnen Sie die Befehlspalette mit Befehl
+ Umschalt
+ P
und
Geben Sie > Neues leeres Jupyter-Notizbuch erstellen
ein und drücken Sie Enter
.
Mit einem kürzlich durchgeführten Update ist dies alles, was Sie zum Starten benötigen. Es ist wunderbar.
Führen Sie den folgenden Befehl in der Befehlszeile im Container aus.
jupyter notebook --port 8888 --ip=0.0.0.0 --allow-root
** Beachten Sie, dass es einige Dinge gibt, die mit dem Befehl jupyter notebook
allein nicht erledigt werden können. ** ** **
Ich denke, es ist bequem, es mit Alias zu setzen.
Folgendes wird an die Befehlszeile zurückgegeben. Kopieren Sie daher den Teil xxxxxxxxxxxxxxx
.
http://127.0.0.1:8000/?token=xxxxxxxxxxxxxxx
Öffnen Sie Ihren lokalen Browser und gehen Sie zur Adressleiste
Geben Sie [Remote Server IP Address]: 18888
ein und drücken Sie Enter
. (18888
ist die Portnummer, die während des Docker-Laufs angegeben wurde.)
Danach werden Sie nach einem Passwort oder Token gefragt. Geben Sie also das zuvor kopierte xxxxxxxxxxxxxxxx
ein und Sie können Jupyter Notebook in Ihrem Browser verwenden.
Sie können eine Verbindung über "Neue Verbindung" mit den folgenden Einstellungen herstellen.
--Wählen Sie SFTP --Server: Remoteserveradresse --Port: Die während des Laufs angegebene Portnummer (10000 hier)
Wenn Ihre VS-Code- oder Befehlszeilen-SSH-Verbindung nicht funktioniert, haben Sie den Container wahrscheinlich mehrmals neu erstellt und haben einen Konflikt mit "unknown_hosts".
Sie können das Problem lösen, indem Sie die entsprechende Beschreibung in "~ / .ssh / unknown_hosts" auf dem lokalen PC löschen oder in "~ / .ssh / unknown_hosts.old" umbenennen.
Was haben Sie gedacht. Ich hoffe, dieser Artikel hilft Ihnen bei Ihrer Arbeit von zu Hause aus und bei der Recherche. Lasst uns weiter zusammenarbeiten und unser Bestes geben!
Recommended Posts