Hallo Habr! Die Containerisierung ist ein Ansatz für die Softwareentwicklung, bei dem eine Anwendung oder ein Dienst, seine Abhängigkeiten und seine Konfiguration (abstrakte Bereitstellungsmanifestdateien) zusammen in ein Container-Image gepackt werden. In diesem Artikel geht es darum, ein Docker-Image zu erstellen und es zum Ausführen von R, Python-Shell und mehr zu verwenden. Jetzt mitmachen!

Eine containerisierte Anwendung kann als Modul getestet und als Containerinstanz im Betriebssystem des aktuellen Knotens bereitgestellt werden.
Docker ist ein
Open Source-Projekt zur Automatisierung der Bereitstellung von Anwendungen in Form von tragbaren, in sich geschlossenen Containern, die in der Cloud oder vor Ort arbeiten können. Weitere Informationen finden Sie hier.
Microsoft Machine Learning Server ist eine flexible Unternehmensplattform für skalierbare Datenanalysen, die Erstellung intelligenter Anwendungen und das Auffinden geschäftsrelevanter Informationen mit vollständiger Unterstützung für Python und R. Der Begriff „
Operationalisierung “ bezeichnet die Bereitstellung von Modellen und Code in R- und Python-Sprachen auf Microsoft Machine Learning Server in Form von
Webdiensten und der anschließenden Verwendung dieser Dienste in Clientanwendungen zur Verbesserung der Effizienz des Unternehmens.
In diesem Artikel wird erläutert, wie Sie mithilfe von Docker-Dateien ein Docker-Image mit
Machine Learning Server 9.3 erstellen und die folgenden Vorgänge ausführen:
- Führen Sie die R-Shell aus.
- Start der Python-Shell.
- Starten Sie Jupyter Notebook.
- Starten Sie die OneBox-Konfiguration.
- Starten des Webdienstes R.
- Starten eines Python-Webdienstes.
Erforderliche Komponenten
Jede virtuelle Linux-Maschine mit installierter Docker Community Edition (CE) -Software. Bei der Vorbereitung dieses Artikels habe ich die
Ubuntu 16.04-VM bereitgestellt und
Docker CE installiert .
Schritt 1
Zuerst erstellen wir ein Image namens mlserver mit
Machine Learning Server 9.3, das mit der folgenden Docker-Datei installiert wird:
FROM ubuntu:16.04 RUN apt-get -y update \ && apt-get install -y apt-transport-https wget \ && echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ xenial main" | tee /etc/apt/sources.list.d/azure-cli.list \ && wget https:
Verwenden Sie den
Docker-Build-Befehl , um ein mlserver-Image mit der obigen Docker-Datei zu erstellen:
docker build -f mlserver-dockerfile -t mlserver.
Stellen Sie sicher, dass die Erstellung des mlserver-Images erfolgreich abgeschlossen wurde, indem Sie den folgenden Befehl ausführen:
docker images
R Shell-Start
docker run -it mlserver R

Start der Python-Shell
docker run -it mlserver mlserver-python

Starten Sie Jupyter Notebook
docker run -p 8888:8888 -it mlserver /opt/microsoft/mlserver/9.3.0/runtime/python/bin/jupyter notebook --no-browser --port=8888 --ip=0.0.0.0 --allow-root
Wenn Sie den obigen Befehl ausführen, erhalten Sie einen Link, indem Sie ihn in einem Browser öffnen. Sie können Jupyter-Notizbücher verwenden.

Starten Sie die OneBox-Konfiguration
Microsoft Learning Server kann nach der Installation so konfiguriert werden, dass es als Bereitstellungsserver und Host für analytische Webdienste für die
Operationalisierung verwendet wird .
FROM ubuntu:16.04 RUN apt-get -y update \ && apt-get install -y apt-transport-https wget \ && echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ xenial main" | tee /etc/apt/sources.list.d/azure-cli.list \ && wget https:
Erstellen Sie das mlserver-onebox-Image mit der obigen Docker-Datei:
docker build -f mlserver-onebox-dockerfile -t mlserver-onebox.
Stellen Sie sicher, dass die Erstellung des mlserver-onebox-Images erfolgreich abgeschlossen wurde, indem Sie den folgenden Befehl ausführen:
docker images
Starten Sie den Onebox-Container mit dem folgenden Befehl:
docker run --name mlserver-onebox-container -dit mlserver-onebox
Überprüfen Sie den Zustand des Behälters mit:
docker logs mlserver-onebox-container
Nachdem Sie mit dem obigen Befehl überprüft haben, ob die Diagnosetests erfolgreich waren, können Sie diesen Container als One-Box verwenden (die Docker-Protokolldaten sollten die folgende Zeile enthalten: "Alle Diagnosetests sind bestanden").
Ermitteln Sie die IP-Adresse des Containers, indem Sie den folgenden Befehl ausführen:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mlserver-onebox-container '172.17.0.3'
Und verwenden Sie es als One-Box:
az login --mls --mls-endpoint "http://172.17.0.3:12800" --username "admin" --password "Microsoft@2018" az ml admin diagnostic run
Starten des R-Webdienstes
Wir können auch ein Image mit einem vorkonfigurierten Webdienst erstellen, damit es sofort nach der Bereitstellung des Containers einsatzbereit ist. Hier ist ein Beispiel für die Erstellung eines Images mit dem R-Webdienst zur Simulation der
manuellen Übertragung , das darin vorkonfiguriert ist.
FROM ubuntu:16.04 RUN apt-get -y update \ && apt-get install -y apt-transport-https wget \ && echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ xenial main" | tee /etc/apt/sources.list.d/azure-cli.list \ && wget https:
Erstellen Sie mit der obigen Docker-Datei ein Bild für die manuelle Übertragung:
docker build -f r-manualtransmission-dockerfile -t rmanualtransmission.
Stellen Sie sicher, dass die Erstellung des manuellen Übertragungsabbilds erfolgreich abgeschlossen wurde, indem Sie den folgenden Befehl ausführen:
docker images
Starten Sie den Container mit dem folgenden Befehl:
docker run --name rmanualtransmission-container -dit rmanualtransmission
Überprüfen Sie den Zustand des Behälters mit:
docker logs rmanualtransmission-container
Nachdem Sie überprüft haben, ob die Diagnosetests erfolgreich waren und der Webdienst veröffentlicht wurde, können Sie ihn verwenden.
Ermitteln Sie die IP-Adresse des Containers, indem Sie den folgenden Befehl ausführen:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' rmanualtransmission-container '172.17.0.3'
Sie können die Webdienst-Einstellungsdatei swagger.json R verwenden oder abrufen, um die manuelle Übertragung mithilfe von Curl-Befehlen zu simulieren:
apt-get -y install jq curl -s --header "Content-Type: application/json" --request POST --data '{"username":"admin","password":"Microsoft@2018"}' http:
Die Datei swagger.json eignet sich zum
Erstellen einer Clientbibliothek
in einer beliebigen Sprache .
Ausführen des Python-Webdienstes
Das folgende Beispiel zeigt
, wie Sie mit dem Python-Webdienst ein Image erstellen, um die darin vorkonfigurierte
manuelle Übertragung zu simulieren .
FROM ubuntu:16.04 RUN apt-get -y update \ && apt-get install -y apt-transport-https wget \ && echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ xenial main" | tee /etc/apt/sources.list.d/azure-cli.list \ && wget https:
Erstellen Sie ein pymanuelles Übertragungsbild mit der obigen Docker-Datei:
docker build -f py-manualtransmission-dockerfile -t pymanualtransmission.
Stellen Sie sicher, dass die Erstellung des pymanualtransmission-Images erfolgreich abgeschlossen wurde, indem Sie den folgenden Befehl ausführen:
docker images
Starten Sie den Container mit dem folgenden Befehl:
docker run --name pymanualtransmission-container -dit pymanualtransmission
Überprüfen Sie den Zustand des Behälters mit:
docker logs pymanualtransmission-container
Nachdem Sie überprüft haben, ob die Diagnosetests erfolgreich waren und der Webdienst veröffentlicht wurde, können Sie ihn verwenden.
Ermitteln Sie die IP-Adresse des Containers, indem Sie den folgenden Befehl ausführen:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' pymanualtransmission-container '172.17.0.3'
Sie können die Datei swagger.json zum Einrichten eines Python-Webdienstes abrufen, um die manuelle Übertragung mithilfe von Curl-Befehlen zu simulieren:
apt-get -y install jq curl -s --header "Content-Type: application/json" --request POST --data '{"username":"admin","password":"Microsoft@2018"}' http:
Die Datei swagger.json eignet sich zum
Erstellen einer Clientbibliothek
in einer beliebigen Sprache .
HINWEIS Sie können die Einstellungen der Website appsettings.json auch mithilfe der Magic Docker-Datei ändern und die
LDAP / AAD-Authentifizierung aktivieren.
Erweiterungen
Erstellte lokale Docker-Images können an die
Azure Container Registry (ACR ) gesendet werden.
Erstellen Sie einen Cluster in Azure Kubernetes Service (AKS) mit Bildern von ACR
, die mithilfe von Autoscale-Pods
automatisch auf beide Seiten skaliert werden können .
LINKS