Простые среды разработки с Operation

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

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

С появлением все большего количества различных инструментов и библиотек иногда трудно понять, что установлено на нашей рабочей станции и как легко управлять всем этим. Каждый сталкивался с часами отладки только для того, чтобы установить определенную библиотеку Python или утилиту Bash.

Если вы хотите узнать больше о технологии Docker, здесь, на Medium, уже есть много хороших ресурсов.

Мобильная лаборатория с Docker

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

У этого рабочего процесса есть много преимуществ:

  • Вы можете устанавливать и тестировать библиотеки, не беспокоясь о разрушении вашей глобальной системы. Все изолировано в контейнерах.
  • Благодаря Dockerfiles вы отслеживаете различные рабочие пространства и их развитие в Git.
  • Вы можете запустить любое рабочее пространство на любом компьютере. Просто нужно установить Docker (что довольно просто).
  • Вы можете делиться рабочими местами. Любой из ваших проектов можно запустить на компьютере вашего друга.

ОК, это звучит хорошо. Мы больше не будем бояться при установке или обновлении библиотек. Возможность запускать проекты в любом месте - это отличная возможность, и получение всех исторических изменений благодаря Git сэкономит время.

Тем не менее, есть небольшой недостаток: вам нужно писать длинные команды, чтобы иметь возможность запускать эти контейнеры.

Нам всегда нужны быстрые и простые инструменты

Чтобы решить эту проблему, я сначала подумал о docker-compose. Этот инструмент действительно полезен для определения и запуска многоконтейнерных приложений Docker. Он может возобновить сложную текущую операцию с помощью простой команды docker-compose up.

Тем не менее, это не тот инструмент, который мы бы использовали в нашем контексте, по крайней мере, по двум причинам:

Во-первых, вы должны запустить команду docker-compose либо в папке, содержащей docker-compose.yml, либо указать полные пути к файлам Docker, которые довольно длинные. Это не так просто, как просто набрать jupyter-notebook в консоли или запустить приложение Rstudio, как мы привыкли.

Во-вторых, вам нужно установить docker-compose. Хорошо, это не самое сложное. Но вам все равно придется добавить этот слой при установке рабочих пространств.

Поэтому я спросил себя, какой инструмент у вас по умолчанию установлен в большинстве систем Unix? Простой ответ: Баш.

Так родилась Операция.

Операция: среды Docker с поддержкой Bash.

Средство очень простое. Фактически, это просто отображение команд запуска контейнера докеров на простые выражения в сценарии оболочки.

Среда - или «операция» - определяется файлом Dockerfile и файлом конфигурации. Последний используется для указания команды запуска контейнера и всех необходимых параметров, таких как тома, переменные среды и т. Д.

Отображение интерпретируется в простой сценарий оболочки. Мы можем собрать все образы Docker с помощью простого operation briefing.

Затем вместо запуска длинной команды Docker для запуска Jupyter Notebook вам просто нужно ввести operation jupyter.

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

При работе над более сложным проектом я предпочитаю настраивать файлы Dockerfiles или даже файлы docker-compose внутри проекта, а не создавать его в Operation. Это лучше для воспроизводимости проекта.

Поскольку я использую в основном Python и R, я начал создавать «операции», такие как IPython или среды Rstudio в браузере. Я также воспользовался этим решением, чтобы настроить некоторые задачи, которые я не выполняю каждый день, но которые очень полезны, например, преобразование файлов CSV, вращение изображений или операции с датой и временем.

Эти маленькие утилиты можно установить в моей глобальной системе. Для них не требуется много зависимостей. Тем не менее, я хочу иметь возможность использовать их, вообще не беспокоясь о конфигурации моей системы, а также иметь возможность быстро находить их, когда я перехожу на другую рабочую станцию.

С Operation, они у меня просто под рукой.

История позади

Идея здесь не нова. Джесси Фразелл, бывший инженер Docker-Google-Microsoft, уже имеет полный репозиторий Dockerfiles для запуска изолированных настольных приложений. Я рекомендую вам прочитать соответствующую запись в блоге.

Название Операция пришло мне в голову после прочтения книги Тома Клэнси. Как и военные операции, контейнеры Docker определяются, эксплуатируются и затем классифицируются. Чтобы реализовать идею, я даже добавил псевдонимы секретных операций. Например, вы можете запустить консоль IPython под управлением operation ipython или operation rattlesnake.

Эта блокировка также позволила мне немного узнать о 3D-моделировании и рендеринге с помощью Blender. Сделал несколько рисунков вокруг Докерского кита. Узнайте больше о конкретном проекте Behance.

Дальнейшее развитие

Я воспользовался блокировкой, чтобы начать этот небольшой проект и улучшить свои навыки Bash. Поскольку мы привыкли сталкиваться с множеством новых инструментов и сред, он, вероятно, будет регулярно обновляться. Можно сделать множество улучшений, например:

  • Оптимизируйте определения изображений и работайте над передовыми методами Docker.
  • Улучшенный процесс установки (поддержка apt-get?).
  • Возможные объемы нарушений «безопасности» и авторизации.
  • Улучшайте документацию.
  • Добавление «приоритетов» операций для быстрого создания определенных образов Docker.
  • Лучший интерфейс командной строки без использования какого-либо другого инструмента, кроме Bash.

На данный момент каждая операция достаточно близка к моим личным предпочтениям. Если вы хотите добавить свои собственные операции: добавьте свой Dockerfile и заполните config.yml файл, и все готово.

У вас есть идеи по улучшению? Думаете, нужно создать какие-то новые среды? Вы можете найти репозиторий на Github. Не стесняйтесь добавить проблему или создать запрос на объединение, добавить комментарий ниже или связаться со мной в Twitter. Буду рад услышать от вас.