Станьте опытным пользователем Docker с VS Code и расширением Docker.

Ваша услуга реализована на выбранном вами языке. Теперь вы хотите поместить его в контейнер и протестировать локально перед развертыванием в производственной среде. Первым шагом будет написание файла Docker, создание образа, запуск контейнера и проверка журналов. Верно?

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

Что, если есть инструмент, который может написать для вас Dockerfile, помочь вам с автозаполнением и предоставить графический пользовательский интерфейс для взаимодействия с движком Docker?

Расширение Docker для Visual Studio Code - это больше, чем просто еще одно расширение IDE. Он может улучшить вашу работу с Docker. В этой истории мы подробно рассмотрим, что может сделать расширение Docker для Visual Studio Code и как его использовать, чтобы стать опытным пользователем Docker.

Learning Rate - это мой еженедельный информационный бюллетень для тех, кто интересуется миром AI и MLOps. Каждую пятницу вы будете получать от меня обновления и мысли о последних новостях, исследованиях, репозиториях и книгах в области искусственного интеллекта. Подпишитесь здесь!

Докер + VS

Расширение Docker для VS Code упрощает создание, запуск, управление и развертывание контейнерных приложений из Visual Studio Code. Чтобы начать его использовать, обязательно скачайте расширение для торговой площадки Visual Studio Code. Более того, это проект с открытым исходным кодом, поэтому вы можете проверить его код, а процедура установки довольно проста, поэтому нет необходимости описывать ее здесь в другом разделе.

Основные особенности

В этом разделе мы рассмотрим основные функции расширения Docker. Позже мы используем многие из них на простом примере.

  • Редактируйте файлы Docker. Вы можете использовать функцию автозаполнения IntelliSense при редактировании файлов Dockerfile и docker-compose.yml. Кроме того, вы получите справку по синтаксису для общих команд.

  • Создание файлов Docker: вы можете сгенерировать и добавить файл Docker в свою рабочую область с помощью команды Docker: Add Docker Files to Workspace из палитры команд. Команда сгенерирует обаDockerfile и .dockerignore файла и добавит их в вашу рабочую область. Вы также можете использовать эту команду для создания добавленных файлов Docker Compose. Это пригодится при отладке.

  • Изучение: расширение Docker предоставляет представление Docker в VS Code. Представление Docker позволяет вам исследовать ресурсы Docker и управлять ими: контейнерами, образами, томами, сетями и реестрами контейнеров. Все на расстоянии одного щелчка правой кнопкой мыши.

  • Выполнение команд Docker. Многие из наиболее распространенных команд Docker встроены прямо в палитру команд. Вы можете запускать команды Docker для управления образами, сетями, томами, реестрами образов и Docker Compose. Кроме того, команда Docker: Prune System удалит остановленные контейнеры, оборванные образы, а также неиспользуемые сети и тома.

  • Отладка контейнеров. Используя расширение Docker, мы можем отлаживать службы, созданные с использованием Node.js, Python или .NET (C #), которые выполняются внутри контейнера.

Есть много других функций, таких как подключения к реестру и управление контекстом, но вы можете пройти долгий путь, просто используя эти ключевые предложения. Затем мы реализуем простое приложение Python Flask, подключаем его и развертываем без необходимости возиться с Docker CLI.

Простой пример

В этом разделе мы создадим простое приложение Flask «Hello World» и развернем его с помощью расширения Docker. Во-первых, код:

Если вы знакомы с Flask, то увидите, что это самое простое приложение, которое вы можете реализовать. Он просто возвращает «Hello World» всякий раз, когда вы попадаете в корневую конечную точку. Затем нам нужен requirements.txt файл для хранения зависимостей, и мы готовы к работе:

Flask==1.1.2
gunicorn

Чтобы создать Dockerfile и все остальное, вам нужно просто запустить Docker: Add Docker Files to Workspace в палитре команд (ctlr+shift+p в Windows).

Выберите вариант Python: Flask для первого вопроса, а затем расширение спросит вас, хотите ли вы включить дополнительные файлы компоновки Docker. Выберите да; таким образом вы сможете позже отладить приложение, работающее внутри контейнера. Наконец, выберите файл python, содержащий приложение Flask (код, указанный выше), и порт, который вы хотите открыть (по умолчанию 5000). Ты готов!

Теперь, чтобы создать образ, щелкните правой кнопкой мыши созданный файл Docker и выберите Build Image.... Откроется терминал, и ваше изображение будет готово в считанные секунды.

Чтобы запустить приложение, выберите значок Docker на левой панели, найдите свой образ в разделе Images, щелкните его правой кнопкой мыши и выберите «Выполнить». Так просто.

В разделе Containers найдите работающий контейнер, щелкните его правой кнопкой мыши и выберите View Logs. Эта команда отобразит журналы вашего контейнера в терминале. Получите конечную точку, которую он слушает (должно быть http://0.0.0.0:5000). Чтобы получить результаты работы службы Python, запустите curl http://0.0.0.0:5000.

Вот и все! Расширение Docker для VS Code упрощает процесс, и вы получаете время, чтобы сосредоточиться на своем коде.

Отладка

Чтобы настроить отладку с помощью Gunicorn, нам нужно кое-что еще. The Docker: Python-Flask конфигурация запуска, которая была создана автоматически, переопределяет точку входа Gunicorn контейнера с отладчиком Python. Чтобы отладить наше приложение, работающее с Gunicorn, мы должны выполнить следующие шаги:

  1. Добавьте debugpy в свой requirements.txt файл.
  2. Добавьте следующий фрагмент кода в файл, который вы хотите отлаживать:
import debugpy
debugpy.listen(("0.0.0.0", 5678))
debugpy.wait_for_client()

3. Добавьте конфигурацию Python: Remote Attach в launch.json в папке .vscode. Теперь файл JSON должен выглядеть так, как показано ниже:

4. Измените файл docker-compose.yml, чтобы открыть порт отладчика, добавив 5678:5678 в раздел портов. Теперь файл должен выглядеть так, как показано ниже:

5. Запустите контейнер, щелкнув файл docker-compose.yml правой кнопкой мыши и выбрав «Создать».

6. Установите точку останова в выбранном файле, перейдите к Run and Debug и выберите Python: Remote Attach конфигурацию запуска.

7. Нажмите F5 или нажмите кнопку воспроизведения, чтобы подключить отладчик.

Удачной отладки!

Заключение

В этой истории мы изучили расширение Docker для VS Code и то, как оно может помочь нам составить Dockerfile, создать образ и развернуть его. Чтобы погрузиться глубже, ознакомьтесь с темой Работа с контейнерами на сайте документации Visual Studio Code, чтобы начать работу.

Learning Rate - это мой еженедельный информационный бюллетень для тех, кто интересуется миром AI и MLOps. Каждую пятницу вы будете получать от меня обновления и мысли о последних новостях, исследованиях, репозиториях и книгах в области искусственного интеллекта. Подпишитесь здесь!

об авторе

Меня зовут Димитрис Поулопулос, я инженер по машинному обучению, работающий в Arrikto. Я разработал и внедрил ИИ и программные решения для крупных клиентов, таких как Европейская комиссия, Евростат, МВФ, Европейский центральный банк, ОЭСР и IKEA.

Если вы хотите прочитать больше сообщений о машинном обучении, глубоком обучении, науке о данных и DataOps, подпишитесь на меня в Medium, LinkedIn или @ james2pl в Twitter. Кроме того, посетите страницу Ресурсы на моем веб-сайте, где можно найти отличные книги и курсы с самым высоким рейтингом, чтобы начать создавать свою собственную учебную программу по науке о данных!