Bonjour, Habr! La conteneurisation est une approche du développement logiciel dans laquelle une application ou un service, ses dépendances et sa configuration (fichiers manifestes de déploiement abstrait) sont regroupés dans une image de conteneur. Dans cet article, nous allons voir comment créer une image docker et l'utiliser pour exécuter R, le shell Python, etc. Rejoignez-nous maintenant!

Une application conteneurisée peut être testée en tant que module et déployée en tant qu'instance de conteneur dans le système d'exploitation (OS) du nœud actuel.
Docker est un
projet open source destiné à automatiser le déploiement d'applications sous la forme de conteneurs autonomes portables pouvant fonctionner dans le cloud ou sur site. Voir
ici pour plus d'informations.
Microsoft Machine Learning Server est une plate-forme d'entreprise flexible pour l'analyse de données évolutive, la création d'applications intelligentes et la recherche d'informations utiles avec une prise en charge complète de Python et R. Le terme «
opérationnalisation » signifie le déploiement de modèles et de code en langues R et Python sur Microsoft Machine Learning Server sous la forme de
services Web et l'utilisation ultérieure de ces services dans les applications clientes pour améliorer l'efficacité de l'entreprise.
Dans cet article, nous verrons comment créer une image Docker contenant
Machine Learning Server 9.3 à l' aide de fichiers Docker et comment l'utiliser pour effectuer les opérations suivantes:
- Exécutez le shell R.
- Démarrage du shell Python.
- Lancez Jupyter Notebook.
- Lancez la configuration OneBox.
- Démarrage du service Web R.
- Démarrage d'un service Web Python.
Composants requis
Toute machine virtuelle Linux avec le logiciel Docker Community Edition (CE) installé. Pour préparer cet article, j'ai déployé la
machine virtuelle Ubuntu 16.04 et
installé Docker CE .
Étape 1
Tout d'abord, nous allons créer une image appelée mlserver avec
Machine Learning Server 9.3 installé à l'aide du fichier docker suivant:
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:
Utilisez la
commande docker build pour créer une image mlserver à l'aide du fichier docker ci-dessus:
docker build -f mlserver-dockerfile -t mlserver.
Vérifiez que la création de l'image mlserver s'est terminée avec succès en exécutant la commande suivante:
docker images
Lancement de Shell R
docker run -it mlserver R

Lancement du shell Python
docker run -it mlserver mlserver-python

Lancez 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
L'exécution de la commande ci-dessus donne un lien en l'ouvrant dans un navigateur, vous pouvez utiliser Jupyter Notebooks.

Lancer la configuration OneBox
Microsoft Learning Server peut être configuré après l'installation pour être utilisé comme serveur de déploiement et héberger des services Web analytiques pour l'
opérationnalisation .
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:
Créez l'image mlserver-onebox à l'aide du fichier docker ci-dessus:
docker build -f mlserver-onebox-dockerfile -t mlserver-onebox.
Vérifiez que la création de l'image mlserver-onebox s'est terminée avec succès en exécutant la commande suivante:
docker images
Lancez le conteneur onebox avec la commande:
docker run --name mlserver-onebox-container -dit mlserver-onebox
Vérifiez l'état du conteneur avec:
docker logs mlserver-onebox-container
Après avoir vérifié avec la commande ci-dessus que les tests de diagnostic ont réussi, vous pouvez utiliser ce conteneur comme une boîte (les données du journal Docker doivent contenir la ligne suivante: «Tous les tests de diagnostic ont réussi».).
Obtenez l'adresse IP du conteneur en exécutant la commande:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mlserver-onebox-container '172.17.0.3'
Et utilisez-le en une seule boîte:
az login --mls --mls-endpoint "http://172.17.0.3:12800" --username "admin" --password "Microsoft@2018" az ml admin diagnostic run
Démarrage du service Web R
Nous pouvons également créer une image avec un service Web préconfiguré afin qu'elle soit prête à être utilisée dès que nous déployons le conteneur. Voici un exemple de création d'une image avec le service Web R pour simuler la
transmission manuelle , qui est pré-configurée à l'intérieur.
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:
Créez une image de transmission manuelle à l'aide du fichier docker ci-dessus:
docker build -f r-manualtransmission-dockerfile -t rmanualtransmission.
Vérifiez que la création de l'image rmanualtransmission s'est terminée avec succès en exécutant la commande:
docker images
Lancez le conteneur à l'aide de la commande:
docker run --name rmanualtransmission-container -dit rmanualtransmission
Vérifiez l'état du conteneur avec:
docker logs rmanualtransmission-container
Après avoir vérifié que les tests de diagnostic ont réussi et que le service Web est publié, vous pouvez commencer à l'utiliser.
Obtenez l'adresse IP du conteneur en exécutant la commande:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' rmanualtransmission-container '172.17.0.3'
Vous pouvez utiliser ou obtenir le fichier de paramètres du service Web swagger.json R pour simuler un transfert manuel à l'aide des commandes curl:
apt-get -y install jq curl -s --header "Content-Type: application/json" --request POST --data '{"username":"admin","password":"Microsoft@2018"}' http:
Le fichier swagger.json convient à la
création d'une bibliothèque cliente dans n'importe quelle langue .
Exécution du service Web Python
Ce qui suit est un exemple de
création d'une image avec le service Web Python pour simuler la transmission manuelle préconfigurée à l'intérieur.
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:
Créez une image de transmission manuelle à l'aide du fichier docker ci-dessus:
docker build -f py-manualtransmission-dockerfile -t pymanualtransmission.
Vérifiez que la création d'image pymanualtransmission s'est terminée avec succès en exécutant la commande:
docker images
Lancez le conteneur à l'aide de la commande:
docker run --name pymanualtransmission-container -dit pymanualtransmission
Vérifiez l'état du conteneur avec:
docker logs pymanualtransmission-container
Après avoir vérifié que les tests de diagnostic ont réussi et que le service Web est publié, vous pouvez commencer à l'utiliser.
Obtenez l'adresse IP du conteneur en exécutant la commande:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' pymanualtransmission-container '172.17.0.3'
Vous pouvez obtenir le fichier swagger.json pour configurer un service Web Python pour simuler un transfert manuel à l'aide des commandes curl:
apt-get -y install jq curl -s --header "Content-Type: application/json" --request POST --data '{"username":"admin","password":"Microsoft@2018"}' http:
Le fichier swagger.json convient à la
création d'une bibliothèque cliente dans n'importe quelle langue .
REMARQUE Vous pouvez également modifier les paramètres du site Web appsettings.json à l'aide du fichier Magic Docker et activer l'
authentification LDAP / AAD .
Extensions
Les images de docker locales créées peuvent être envoyées au
registre de conteneurs Azure (ACR ).
Créez un cluster dans Azure Kubernetes Service (AKS) à l' aide d'images d'ACR
qui peuvent évoluer
automatiquement des deux côtés à l'aide de pods de
mise à l'échelle automatique .
LIENS