Рубрики
Без рубрики

Доберизировать!

Введение в докер и докерезацию. Tagged с Docker, Python, наукой данных.

Решение проблем с кодом – это очень весело. Но когда ваш творческий процесс прерывается проблемой зависимости, когда вы должны копать в терминал, и проверять версии, опасаясь, что один неправильный шаг может сломаться тем, что вы создали в течение недель, это определенно разочаровывает неудача.

На моем пути учиться науки о данных, я много боролся с созданием правильной среды для моего проекта и убедившись, что все мои пакеты установлены и не создают никаких проблем. Но что произойдет, когда мне нужно запустить свое приложение на сервере, где у меня нет среды разработки рук? К счастью, Докер спасает день.

Docker – это открытый источник Платформа для разработчиков и Sysadmins для разработки, развертывания и запуска приложений с контейнерами (от Дочсерская документация ). Здесь мы говорим о контейнерах Linux, или другими словами, приложения, которые позволяют разработчикам обернуть проект в один пакет, который содержит все библиотеки и зависимости, а также сам код проекта. Контейнер можно сравнить с виртуальной машиной, но гораздо легче легко использует только правильное количество ресурсов из хост-машины, а не создание полной операционной системы внутри хозяина.

В этом уроке я познакомим вас с некоторыми ключевыми концепциями и компонентами докера, которые могут начать использовать их в процессе вашего развития.

Установка

Доступны 2 Docker Editions: Docker CE (Community Edition) и EE (Enterprise Edition). Документация рекомендует CE для учебных целей и проекты малых команд. Docker можно запустить на AWS или загруженным для запуска на локальной машине. В этом руководстве я собираюсь скачать Docker для MacOS. Если у вас нет учетной записи Docker, вам необходимо создать, чтобы можно было бы загрузить установочный файл.

  • Запустите установочный файл Docker.dmg и переместите приложение в папку приложений

  • Откройте Docker из папки ваших приложений. Вы увидите значок, появляющийся в верхнем правом углу экрана.

  • Войдите с вашим докера

  • В терминале введите следующее, чтобы увидеть, правильно ли он работает:

Докер бегите привет-мир

Выход должен выглядеть как Thi:

latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:5f179596a7335398b805f036f7e8561b6f0e32cd30a32f5e19d17a3cda6cc33d
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

Docker Images и DockerFiles

Существует 2 ключевых компонента докеризации вашего проекта: Docker Images и DockerFiles.

Изображение может быть описано как набор инструментов и инструкции, которые нам необходимо выполнить код проекта: системные инструменты, библиотеки, зависимости и т. Д. Удобно, этот набор инструментов может быть повторно использован очень простым способом, поэтому вам не нужно будет определять новую среду проекта, но все может повторно использовать существующий.

Dockerfile – это текстовый файл с набором инструкций для сборки изображения. Каждая строка DockerFile считается слоем, который может быть позже повторно используется.

Существует также облачная служба под названием Docker Hub Там, где пользователи Docker могут поделиться докерами изображениями. Эта услуга похожа на то, что Github делает для Git.

Запуск существующего изображения

Чтобы проверить, как Docker может запустить Jupyter Server, я последовал за этим руководство

Я начал с выполнения этой команды в моем терминале:

Docker Run Ubuntu: 16.04

Эта команда запускает изображение под названием [Ubuntu] с версией изображения [16.04]. Если Docker не находит изображение на локальной машине, он будет посмотреть в Docker Hub, чтобы загрузить изображение.

Есть несколько дополнительных вариантов для Беги Команда, которую можно найти в Дочсерская официальная документация Отказ

Как я уже упоминал ранее, очень удобно использовать существующие изображения. Давайте запустим изображение, уже созданное сообществом развития Jupyter, которое установлено только Python и Jupyter: https://hub.docker.com/r/jupyter/minimal-notebook.

Docker Run -P 8880: 8888 Jupyter/Minimal-Notebook

В вышеуказанной линии -p : Является ли часть, которая сообщает Docker открыть соединение между контейнером Docker и Host Machine, поэтому возможны взаимодействие с запущенным контейнером.

Jupyter/Minimal-Notebook это изображение, которое мы хотим запустить.

После выполнения этой команды вы увидите этот тип вывода в вашем терминале:

To access the notebook, open this file in a browser:
        file:///home/jovyan/.local/share/jupyter/runtime/nbserver-6-open.html
    Or copy and paste one of these URLs:
        http://(2f0da4326d97 or [my IP address]):8888/?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Из последнего URL-адреса мы должны взять номер токена, который я представлял «X», так как это секретный ключ. С номером порта 8880, который я использовал для запуска изображения, я смог получить доступ к тетради: http://localhost:8880/?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Следующий шаг будет разрешать создавать и внести изменения в ноутбук Jupyter с запуском контейнера. Есть специальный вариант в Беги команда:

-V :

Каталог хоста Указывает, где хранить ноутбук, который мы собираемся создавать, и каталог контейнера должен быть указан в контейнерной документации (при использовании контейнера Docker Hub). В нашем случае каталог контейнера из документации был /Home/Jovyan

Таким образом, последний код для запуска изображения с возможностью доступа к нему и создавать ноутбук:

Docker Run -P 8880: 8888 -V ~/docker_tests:/home/jovyan jupyter/минимальный ноутбук

Собираюсь http://localhost: 8880/? Token = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx В вашем браузере позволит вам получить доступ к вашему серверу Jupyter и создавать ноутбуки.

Докеризация вашего Python Project

Чтобы подключить свой проект, сначала необходимо создать Dockerfile, содержащую инструкции, на каком изображении вы будете использовать, какие пакеты вам нужно установить, и какой каталог вашего проекта есть.

Представьте, что вам нужно подключить свой сценарий Python под названием add_numbers.py Это потребует установки Scikit - учить библиотека.

Во-первых, создайте файл под названием Dockerfile (не добавляйте расширение к нему!). Добавьте эти строки в файл в любом текстовом редакторе:

FROM python:3

ADD add_numbers.py /

RUN pip install -U scikit-learn

CMD [ "python", "add_numbers.py" ]

От Команда говорит, что изображение вы используете как шаблон.

Добавить Рассказывает Docker добавить определенный скрипт до DockerFile. Эта команда занимает 2 параметра: источник и назначение

Добавить <Источник> <Пункт назначения>

Беги Говорит, что перед выполнением скрипта установка Scikit - учить должно быть сделано.

CMD Предоставляет команду по умолчанию, которая будет выполняться после нагрузки изображения, если не перезаписано другой командой.

Мой файл python add_numbers.py имеет только следующий код:

def add_numbers (a, b):
   return a + b

c = 3
d = 4

print(add_numbers(c, d))

После создания моего скрипта и My DockerFile, у которых есть инструкции о том, как создать изображение, я могу запустить эту команду для создания нового изображения на основе вновь созданного DockerFile:

Docker Build -t add_numbers.

Эта команда создает изображение, называемое «add_numbers» на основе Dockerfile из того же каталога, с которым мы выполняем команду.

Наконец, мы можем запустить изображение с этой командой:

Docker Run add_numbers.

Поскольку мой сценарий Python содержит функцию, которая добавит два числа и распечатает результат, а также имел один вызов функции для добавления 3 + 4, я получил 7 в качестве вывода в моем терминале.

Чтобы узнать больше, пожалуйста, обратитесь к Официальной документации Docker: https://docs.docker.com/

Полезные учебные пособия по началу работы с Docker: https://runnable.com/docker/python/dockerize-yourturethon-aplication https://www.dataquest.io/blog/Docker-data-science/

Оригинал: “https://dev.to/annalara/dockerize-it-4pne”