Olá Habr! A conteinerização é uma abordagem ao desenvolvimento de software na qual um aplicativo ou serviço, suas dependências e configuração (arquivos de manifesto de implantação abstrata) são empacotados juntos em uma imagem de contêiner. Neste artigo, veremos como criar uma imagem do docker e usá-la para executar o R, o shell Python e muito mais. Inscreva-se agora!

Um aplicativo em contêiner pode ser testado como um módulo e implementado como uma instância de contêiner no sistema operacional (SO) do nó atual.
O Docker é um
projeto de código aberto para automatizar a implantação de aplicativos na forma de contêineres portáteis e independentes que podem funcionar na nuvem ou no local. Veja
aqui para mais informações.
O Microsoft Machine Learning Server é uma plataforma corporativa flexível para análise de dados escalável, criando aplicativos inteligentes e encontrando informações valiosas para os negócios com suporte total para Python e R. O termo "
operacionalização " significa a implantação de modelos e códigos nas linguagens R e Python no Microsoft Machine Learning Server na forma de
serviços da
web e o uso subsequente desses serviços em aplicativos clientes para melhorar a eficiência da empresa.
Neste artigo, veremos como criar uma imagem de janela de encaixe contendo o
Machine Learning Server 9.3 usando arquivos do Docker e como usá-la para executar as seguintes operações:
- Execute o shell R.
- Inicialização do shell Python.
- Inicie o Jupyter Notebook.
- Inicie a configuração do OneBox.
- Iniciando o serviço da web R.
- Iniciando um serviço da Web Python.
Componentes Necessários
Qualquer máquina virtual Linux com software docker community edition (CE) instalado. Na preparação deste artigo,
implantei a VM do
Ubuntu 16.04 e
instalei o docker CE .
Etapa 1
Primeiro, criaremos uma imagem chamada mlserver com o
Machine Learning Server 9.3 instalado usando o seguinte arquivo de janela de encaixe:
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 o
comando docker build para criar uma imagem mlserver usando o arquivo docker acima:
docker build -f mlserver-dockerfile -t mlserver.
Verifique se a criação da imagem mlserver foi concluída com êxito executando o seguinte comando:
docker images
Lançamento do Shell R
docker run -it mlserver R

Lançamento do shell Python
docker run -it mlserver mlserver-python

Iniciar o 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
A execução do comando acima fornece um link, abrindo-o em um navegador, você pode usar os Jupyter Notebooks.

Iniciar configuração do OneBox
O Microsoft Learning Server pode ser configurado após a instalação para ser usado como servidor de implantação e hospedar serviços web analíticos para
operacionalização .
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:
Crie a imagem mlserver-onebox usando o arquivo de encaixe acima:
docker build -f mlserver-onebox-dockerfile -t mlserver-onebox.
Verifique se a criação da imagem mlserver-onebox foi concluída com êxito executando o seguinte comando:
docker images
Inicie o contêiner onebox com o comando:
docker run --name mlserver-onebox-container -dit mlserver-onebox
Verifique as condições do contêiner com:
docker logs mlserver-onebox-container
Após verificar com o comando acima se os testes de diagnóstico foram bem-sucedidos, você pode usar este contêiner como uma caixa (os dados do log do Docker devem conter a seguinte linha: “Todos os testes de diagnóstico foram aprovados”.).
Obtenha o endereço IP do contêiner executando o comando:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mlserver-onebox-container '172.17.0.3'
E use-o como uma caixa:
az login --mls --mls-endpoint "http://172.17.0.3:12800" --username "admin" --password "Microsoft@2018" az ml admin diagnostic run
Iniciando o serviço da web R
Também podemos criar uma imagem com um serviço da Web pré-configurado para que fique pronto para uso assim que implantarmos o contêiner. Aqui está um exemplo de criação de uma imagem com o serviço da web R para simular a
transmissão manual , que é pré-configurada dentro dela.
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:
Crie uma imagem de transmissão manual usando o arquivo docker acima:
docker build -f r-manualtransmission-dockerfile -t rmanualtransmission.
Verifique se a criação da imagem de transmissão rmanual foi concluída com êxito executando o comando:
docker images
Inicie o contêiner usando o comando:
docker run --name rmanualtransmission-container -dit rmanualtransmission
Verifique as condições do contêiner com:
docker logs rmanualtransmission-container
Depois de verificar se os testes de diagnóstico foram bem-sucedidos e o serviço da web foi publicado, você pode começar a usá-lo.
Obtenha o endereço IP do contêiner executando o comando:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' rmanualtransmission-container '172.17.0.3'
Você pode usar ou obter o arquivo de configurações do serviço da web swagger.json R para simular a transferência manual usando os comandos curl:
apt-get -y install jq curl -s --header "Content-Type: application/json" --request POST --data '{"username":"admin","password":"Microsoft@2018"}' http:
O arquivo swagger.json é adequado para
criar uma biblioteca cliente em qualquer idioma .
Executando o serviço Web Python
A seguir, é apresentado um exemplo de
criação de uma imagem com o serviço da Web Python para simular a transmissão manual pré-configurada dentro dela.
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:
Crie uma imagem de transmissão pymanual usando o arquivo docker acima:
docker build -f py-manualtransmission-dockerfile -t pymanualtransmission.
Verifique se a criação da imagem de transmissão pymanual foi concluída com êxito executando o comando:
docker images
Inicie o contêiner usando o comando:
docker run --name pymanualtransmission-container -dit pymanualtransmission
Verifique as condições do contêiner com:
docker logs pymanualtransmission-container
Depois de verificar se os testes de diagnóstico foram bem-sucedidos e o serviço da web foi publicado, você pode começar a usá-lo.
Obtenha o endereço IP do contêiner executando o comando:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' pymanualtransmission-container '172.17.0.3'
Você pode obter o arquivo swagger.json para configurar um serviço da Web Python para simular a transferência manual usando os comandos curl:
apt-get -y install jq curl -s --header "Content-Type: application/json" --request POST --data '{"username":"admin","password":"Microsoft@2018"}' http:
O arquivo swagger.json é adequado para
criar uma biblioteca cliente em qualquer idioma .
NOTA Você também pode alterar as configurações do site appsettings.json usando o arquivo docker mágico e ativar
a autenticação LDAP / AAD .
Extensões
Imagens de janela de encaixe local criadas podem ser enviadas para o
ACR (Registro de Contêiner do
Azure ).
Crie um cluster no Serviço de Kubernetes do Azure (AKS) usando imagens do ACR
que podem ser dimensionadas automaticamente para os dois lados usando os pods de
Escala Automática .
LINKS