Разверните свой первый ноутбук Jupyter в Docker
21 февраля 2022 г.Есть только два способа прожить свою жизнь. Один как будто ничто не является чудом. Другой, как будто все это чудо. -Альберт Эйнштейн
В этой статье мы поговорим о том, что такое Docker, как он работает и как развернуть блокнот Jupyter в Docker Container.
Что такое Докер?
Согласно Веб-сайт Docker, Docker — это открытая платформа для разработки, доставки и запуска приложений. Docker позволяет вам отделить ваши приложения от вашей инфраструктуры, чтобы вы могли быстро доставлять программное обеспечение.
Другими словами, Docker — это платформа, которая предоставляет контейнер для запуска хоста и запуска ваших приложений, не беспокоясь о таких вещах, как зависимость от платформы. Он предоставляет инфраструктуру, называемую контейнером, в которой ваши платформы могут храниться и работать.
Из чего состоит Docker (в двух словах)
Здесь мы предоставим обзор того, что такое Docker. Если вам нужен исчерпывающий обзор того, как работает Docker, ознакомьтесь с этой статьей .
Архитектура Docker разделена на три (3) раздела:
- Докер Engine (докерд)
- docker-containerd (содержится)
- докер-runc (выполнить)
Docker Engine (докерд)
Механизм Docker состоит из демона Docker, интерфейса API и интерфейса командной строки Docker. Демон Docker (dockerd) постоянно работает как системная служба dockerd. Он отвечает за создание образов докеров.
Docker-контейнерd
containerd – это еще одна служба системного демона, которая отвечает за загрузку образов Docker и их запуск в качестве контейнера. Он предоставляет свой API для получения инструкций от службы dockerd.
Docker-runc
runc — это среда выполнения контейнера, отвечающая за создание пространств имен и cgroups, необходимых для контейнера. Затем он запускает команды контейнера внутри этих пространств имен. runc среда выполнения реализована в соответствии со спецификацией OCI.
Как развернуть блокнот Colab Jupyter в контейнере Docker
В этой части мы собираемся построить простую модель классификатора, используя набор данных Iris, после чего мы импортируем код из colab и, наконец, мы устанавливаем и запускаем развертывание скрипта, содержащего модель, в контейнер докеров.
Модель здания
В этом разделе мы создадим модель классификатора, используя встроенный в sklearn [набор данных Iris] (https://scikit-learn.org/stable/auto_examples/datasets/plot_iris_dataset.html).
ШАГ 1. Создайте новый блокнот в google colab.
ШАГ 2 Импортируйте зависимости.
```javascript
импортировать matplotlib.pyplot как plt
из показателей импорта sklearn
из sklearn.datasets импортировать load_iris
из sklearn.model_selection импорта train_test_split
из sklearn.neighbors импортировать KNeighborsClassifier
ШАГ 3 Здесь мы собираемся загрузить набор данных радужной оболочки, разделить данные на обучающий набор и тестовый набор и построить нашу модель классификации.
```javascript
диафрагма = load_iris()
X = радужная оболочка.данные
у = радужная оболочка.цель
Выше мы загрузили набор данных Iris.
```javascript
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=4)
Выше мы использовали функцию train_test_split в sklearn, чтобы разделить набор данных радужной оболочки на обучающий набор и тестовый набор.
```javascript
knn = KNeighborsClassifier (n_neighbors = 10)
knn.fit(X,y)
Выше мы создали экземпляр модели классификатора KNeighbors и настроили гиперпараметр n_neighbours, чтобы он содержал десять (10) соседей.
Установка и развертывание в Docker
Это последняя глава, здесь мы собираемся установить настольное приложение docker и написать сценарии, которые будут развертывать наш сценарий в контейнере Docker.
ШАГ 1 Во-первых, вы загружаете скрипт Python, содержащий обученную модель, из colab.
ШАГ 2 Теперь мы установим и настроим Docker. Вы можете установить Docker, используя эту__ссылку__ ШАГ 3 Теперь создайте каталог с именем iris-classifier. где мы собираемся разместить нашу модель и сценарии докеров.
Переместите файл python, содержащий модель классификации радужной оболочки, в только что созданную папку iris-classification.
В той же папке создайте текстовый файл с именем requirements. Ниже показано, что он будет содержать.
```javascript
sklearn==0.0
матплотлиб == 3.2.2
ШАГ 4 Здесь мы создадим Dockerfile, перейдем в основной каталог и создадим файл с именем Dockerfile без расширения. Dockerfile — это скрипт, который используется для создания образа контейнера. Ниже приведены элементы, которые будут содержаться в вашем Dockerfile.
```javascript
ОТ питона: 3.8
ДОБАВИТЬ требования.txt/
ЗАПУСК pip install -r /requirements.txt
ДОБАВИТЬ iris-classifier.py/
ENV PYTHONUNBUFFERED=1
CMD [ "python", "./iris-classifier.py" ]
Выше мы просто сказали докеру, что делать каждый раз, когда контейнер запускается.
ШАГ 5 Здесь мы собираемся создать наш файл Docker Compose. Файлы docker-compose — это просто файлы конфигурации, которые упрощают поддержку различных контейнеров Docker.
В каталоге вашего проекта создайте файл с именем docker-compose.yml. Ниже приведено содержимое, которое должно содержаться в файле.
```javascript
версия: "3"
Сервисы:
радужная оболочка-классификатор-восходящая линия:
в случае сбоя или перезапуска сервера контейнер перезапустится
перезапуск: всегда
container_name: радужная оболочка-классификатор-восходящая ссылка
изображение: iris-classifier-uplink
строить:
создаем образ классификатора из Dockerfile в текущем каталоге
контекст: .
Теперь в вашем каталоге iris-classifier у вас должно быть три (3) файла.
- докер-compose.yml
- Докерфайл
- требования.txt
Запуск контейнера Docker
Это последний шаг, здесь мы запустим наш док-контейнер, используя команды, указанные ниже.
```javascript
сборка докеров
докер составить -d
Это конец, наша модель Python теперь работает в док-контейнере!
Полезные ссылки
Конечная заметка
Блокноты Jupyter — действительно хорошие места для создания моделей, и вы также можете использовать их в качестве серверных частей для приложений, к сожалению, они не работают вечно.
Docker поможет вам исправить это, повторно запустив блокнот Jupyter, когда он выйдет из строя, и это делает его инструментом, о котором стоит знать.
- Впервые опубликовано [здесь] (https://edemgold.blog/how-to-deploy-a-jupyter-notebook-to-docker)*
Оригинал