Hola Habr! La contenedorización es un enfoque para el desarrollo de software en el que una aplicación o servicio, sus dependencias y configuración (archivos de manifiesto de implementación abstracta) se agrupan en una imagen de contenedor. En este artículo, veremos cómo crear una imagen acoplable y usarla para ejecutar R, el shell de Python y más. Únete ahora!

Una aplicación en contenedor puede probarse como módulo e implementarse como una instancia de contenedor en el sistema operativo (SO) del nodo actual.
Docker es un
proyecto de código abierto para automatizar la implementación de aplicaciones en forma de contenedores portátiles y autónomos que pueden funcionar en la nube o en las instalaciones. Ver
aquí para más información.
Microsoft Machine Learning Server es una plataforma empresarial flexible para el análisis de datos escalables, la creación de aplicaciones inteligentes y la búsqueda de información valiosa para el negocio con soporte completo para Python y R. El término "
operacionalización " significa la implementación de modelos y códigos en los idiomas R y Python en Microsoft Machine Learning Server en forma de
servicios web y el uso posterior de estos servicios en aplicaciones cliente para mejorar la eficiencia de la empresa.
En este artículo, veremos cómo crear una imagen acoplable que contenga
Machine Learning Server 9.3 utilizando archivos Docker y cómo usarla para realizar las siguientes operaciones:
- Ejecute el shell R.
- Python shell de inicio.
- Inicie Jupyter Notebook.
- Inicie la configuración de OneBox.
- Inicio del servicio web R.
- Inicio de un servicio web Python.
Componentes requeridos
Cualquier máquina virtual Linux con el software docker community edition (CE) instalado. Al preparar este artículo, implementé
Ubuntu 16.04 VM e
instalé docker CE .
Paso 1
Primero, crearemos una imagen llamada mlserver con
Machine Learning Server 9.3 instalado usando el siguiente archivo acoplable:
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:
Use el
comando docker build para crear una imagen mlserver usando el archivo docker anterior:
docker build -f mlserver-dockerfile -t mlserver.
Verifique que la creación de la imagen mlserver se haya completado correctamente ejecutando el siguiente comando:
docker images
Lanzamiento de Shell R
docker run -it mlserver R

Lanzamiento de Python Shell
docker run -it mlserver mlserver-python

Lanzar cuaderno Jupyter
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
Ejecutar el comando anterior proporciona un enlace abriéndolo en un navegador, puede usar Jupyter Notebooks.

Inicie la configuración de OneBox
Microsoft Learning Server se puede configurar después de la instalación para usarlo como un servidor de implementación y servicios web analíticos de host para la
operacionalización .
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:
Cree la imagen mlserver-onebox utilizando el archivo acoplable anterior:
docker build -f mlserver-onebox-dockerfile -t mlserver-onebox.
Verifique que la creación de la imagen mlserver-onebox se haya completado correctamente ejecutando el siguiente comando:
docker images
Inicie el contenedor onebox con el comando:
docker run --name mlserver-onebox-container -dit mlserver-onebox
Verifique el estado del contenedor con:
docker logs mlserver-onebox-container
Después de verificar con el comando anterior que las pruebas de diagnóstico fueron exitosas, puede usar este contenedor como un cuadro (los datos de registro de Docker deben contener la siguiente línea: "Todas las pruebas de diagnóstico han pasado").
Obtenga la dirección IP del contenedor ejecutando el comando:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mlserver-onebox-container '172.17.0.3'
Y úsalo como una caja:
az login --mls --mls-endpoint "http://172.17.0.3:12800" --username "admin" --password "Microsoft@2018" az ml admin diagnostic run
Inicio del servicio web R
También podemos crear una imagen con un servicio web preconfigurado para que esté listo para usar tan pronto como implementemos el contenedor. Aquí hay un ejemplo de cómo crear una imagen con el servicio web R para simular la
transmisión manual , que está preconfigurada en su interior.
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:
Cree una imagen de transmisión manual utilizando el archivo acoplable anterior:
docker build -f r-manualtransmission-dockerfile -t rmanualtransmission.
Verifique que la creación de la imagen de transmisión rmanual se haya completado correctamente ejecutando el comando:
docker images
Inicie el contenedor con el comando:
docker run --name rmanualtransmission-container -dit rmanualtransmission
Verifique el estado del contenedor con:
docker logs rmanualtransmission-container
Después de verificar que las pruebas de diagnóstico fueron exitosas y que se publicó el servicio web, puede comenzar a usarlo.
Obtenga la dirección IP del contenedor ejecutando el comando:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' rmanualtransmission-container '172.17.0.3'
Puede usar u obtener el archivo de configuración del servicio web swagger.json R para simular la transferencia manual utilizando comandos curl:
apt-get -y install jq curl -s --header "Content-Type: application/json" --request POST --data '{"username":"admin","password":"Microsoft@2018"}' http:
El archivo swagger.json es adecuado para
crear una biblioteca cliente en cualquier idioma .
Ejecutar el servicio web de Python
El siguiente es un ejemplo de
creación de una imagen con el servicio web Python para simular la transmisión manual preconfigurada en su interior.
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:
Cree una imagen de transmisión pymanual utilizando el archivo acoplable anterior:
docker build -f py-manualtransmission-dockerfile -t pymanualtransmission.
Verifique que la creación de la imagen de transmisión pymanual se haya completado correctamente ejecutando el comando:
docker images
Inicie el contenedor con el comando:
docker run --name pymanualtransmission-container -dit pymanualtransmission
Verifique el estado del contenedor con:
docker logs pymanualtransmission-container
Después de verificar que las pruebas de diagnóstico fueron exitosas y que se publicó el servicio web, puede comenzar a usarlo.
Obtenga la dirección IP del contenedor ejecutando el comando:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' pymanualtransmission-container '172.17.0.3'
Puede obtener el archivo swagger.json para configurar un servicio web de Python para simular la transferencia manual utilizando comandos curl:
apt-get -y install jq curl -s --header "Content-Type: application/json" --request POST --data '{"username":"admin","password":"Microsoft@2018"}' http:
El archivo swagger.json es adecuado para
crear una biblioteca cliente en cualquier idioma .
NOTA También puede cambiar la configuración del sitio web appsettings.json utilizando el archivo magic docker y habilitar
la autenticación LDAP / AAD .
Extensiones
Las imágenes locales acopladas creadas se pueden enviar al
Registro de contenedores de Azure (ACR ).
Cree un clúster en Azure Kubernetes Service (AKS) con imágenes de ACR
que se pueden escalar automáticamente a ambos lados con vainas de escalado automático.
Enlaces