Рубрики
Uncategorized

10 мифов о доке, который прекращает разработчикам холодно

Я обсуждал рост докера, и я продолжал слушать биты информации, которые не совсем не казались … с меткой Docker, Devops.

Я обсуждал рост докера, и я продолжал слушать биты информации, которые не совсем не кажутся правильными в моих мыслях.

» Докер только насущно больше предприятия «

» Это только предварительно работает на OSX, едва на окнах »

» Я не уверен, что я могу получить его на местном уровне без кучки хлопот »

… а также более

В этих высказываниях есть крошечные биты истины (см. # 3 и # 5, ниже, например), но крошечные биты истины часто позволяют легко пропустить то, что не верно, или больше не правда.

И со статьями, которые не делают ничего, кроме того, чтобы бросить вокруг жаргона, требуют неординановых номеров каркасов, и обсудить, как управлять запросами с 10thousand-миллиардами в секунду с лишь недвижимостью 30thousandand, автоматизировавшись от 5 микроэнергии, размещенных в микроэнергетиках.

Ну, легко понять, почему у докера есть грандиозная мифология, окружающая ее.

К сожалению, мифы и дезинформация сохраняются, хотя. Они редко делают больше, чем останавливают разработчики от попытки Docker.

Итак, давайте посмотрим на самые распространенные мифы — некоторые, которые я видел, а некоторые, которые я раньше верил — и попытаюсь найти в них правду, а также решения, если есть какие-либо найден.

Миф № 10: Я не могу развиваться с докером …

Потому что я не могу редактировать Dockerfile

Как разработчик, у меня есть конкретные потребности в настройке инструментов и среды, при работе. Мне также было сказано (по праву так), что я не могу редактировать докеренные устройства для добавления того, что мне нужно.

Образ докера производства должен быть настроен только для производственных целей.

Итак, как я могу справиться с потребностями в разработке, с Docker? Если я не могу редактировать DockerFile, чтобы добавить свои инструменты и настройку, как я должен вообще разрабатывать приложения в Docker?

Я мог бы скопировать и вставить производство Dockerfile в свой собственный, а затем изменить этот файл для моих потребностей. Но мы все знаем, что дублирование является корнем всего зла. И мы все знаем, что дублирование является корнем всего зла. Потому что дублирование — корень всего зла.

Решение

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

Я уже строю свой образ приложения производства с базы, как «Узел: 6». Итак, почему бы не создать «dev.dockerfile и устроил его с производства моего приложения в качестве основы?

Dockerfile

FROM node:6

# ... production configuration

Создание производства

$ docker build -t myapp .

dev.dockerfile.

FROM myapp

# ... development configuration

Создание развития

$ docker build -t myapp:dev -f dev.dockerfile .

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

Хотите увидеть изображение Dev в действии?

Проверьте эпизод WatchMecode на Создание контейнера для развития — Часть Руководство по созданию приложений Node.js в Docker Отказ

Миф № 9: Я не вижу ничего в этом контейнере

Потому что я не вижу в свой контейнер, вообще!

Докер — это Приложение виртуализация (Контейнеризация), а не полная виртуальная машина, которая будет использоваться для общих вычислительных целей.

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

Мне нужно получить журналы (за пределами простого консоли моего приложения), изучите выход отладки, и убедитесь, что все мои потребности выполняются по файлам и системам, которые я положил в контейнер.

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

Решение

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

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

Существует два основных метода для этого, в зависимости от обстоятельств.

Метод 1: оболочка в бегущий контейнер

Если у меня уже есть контейнер вверх и работает, я могу использовать команду «Docker Exec для ввода этого контейнера с полным доступом оболочков.

$ docker exec -it mycontainer /bin/sh

После этого я сделаю это, я буду внутри контейнера, как будто я обстреливал в любое управление Linux.

Способ 2: Запустите оболочку как команда контейнера

Если у меня нет контейнера и не работает — и не удается запустить один — я могу запустить новый контейнер с изображением, с помощью Shoin Linux в качестве команды для запуска.

$ docker run -it myapp /bin/sh

Теперь у меня новый контейнер, который проходит с оболочкой, позволяя мне легко оглянуться.

Хотите увидеть оболочку в действии?

Проверьте эти два эпизода из WatchMeCode Руководство по изучению докера и Руководство по созданию приложений Node.js в Docker Отказ

Миф № 8: Я должен кодировать внутри контейнера Docker?

И я не могу использовать свой любимый редактор?!

Когда я впервые посмотрел на Docker Container, управляющий моим кодом Node.js, я был взволнован возможностями.

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

Я должен был повторно построить изображение каждый раз? Это было бы мучительно медленно … и не на самом деле вариант.

Хорошо, я должен снабраться в контейнер для редактирования кода с vim?

Это работает.

Но, если я хотел использовать лучшую IDE/редактор, я бы не смог. Я должен был использовать что-то вроде VIM все время (а не мою предпочтительную версию Vim).

Если у меня есть только доступ только в Command-Line/Shell для моего контейнера, как я могу использовать мой любимый редактор?

Решение

Docker позволяет мне установить папку из моей хост-системы в целевой контейнер, используя «варианты монтажа громкости».

$ docker run -v /dev/my-app:/var/app myapp

При этом папка «/var/var/app contaster указывает на локальную папку»/dev/my-app. Код редактирования в «/dev/my-app — с моим любимым редактором, конечно, — изменит код, который контейнер видит и использует.

Хотите увидеть редактирование в установленном объеме, в действии?

Проверьте эпизод WatchMecode на Код редактирования в контейнере — Часть Руководство по созданию приложений Node.js в Docker Отказ

Миф № 7: Я должен использовать командный отладчик …

и я очень предпочитаю отладчик моего IDE

С возможностью редактирования редактирования кода и оно отражается в контейнере, а также возможность оболочки в контейнер, код отладки — это только шаг.

Мне нужно только запустить отладчик в контейнере после редактирования под вопросом кода, верно?

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

Как это возможно, то использовать отладчик из моего любимого IDE/Editor, с кодом в контейнере?

Решение

Краткий ответ — «дистанционная отладка».

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

Например, с Node.js я могу сделать удаленную отладку через порт TCP/IP (5858). Для отладки через контейнер докеров, то мне нужно только разоблачить этот порт из моего докера (, конечно, «Dev.DockerFile Image).

# ...

EXPOSE 5858

# ...

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

Хочу увидеть визуальный студийный код Отладка контейнера Node.js?

Проверьте эпизод WatchMecode на Отладка в контейнере с визуальным студийным кодом — Часть Руководство по созданию приложений Node.js в Docker Отказ

Миф № 6: Я должен «Докер бежать каждый раз

И я не могу вспомнить всех этих «Параметры докера …

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

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

Более того, каждый вызов «Docker Run создает новый экземпляр контейнера из изображения.

Если мне нужен новый контейнер, это здорово.

Однако, если, однако, я хочу запустить контейнер, который я ранее создал, я не собираюсь понравиться результатом «Docker Run» … что еще один новый экземпляр контейнера.

Решение

Мне не нужно «Docker запустить новый контейнер каждый раз, когда мне нужно один.

Вместо этого я могу «остановиться и» начать под вопросом контейнера.

Это позволяет остановить и запустить мой контейнер, как и ожидалось.

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

Хотите увидеть начало и остановиться в действии?

Есть много эпизодов WatchMecode Руководство по изучению докера и Руководство по созданию приложений Node.js в Docker Это используют эту технику.

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

Миф № 5: Докер вряд ли работает на MacOS и Windows

И я использую Mac/Windows

До нескольких месяцев назад это было в значительной степени верным.

В прошлом Docker на Mac и Windows требовалось использовать полную виртуальную машину с «утилитой докера-машины и слой дополнительного программного обеспечения, подтверждающую работу в/из виртуальной машины.

Это сработало … но он ввел огромное количество накладных расходов, ограничивая (или исключая) определенные функции.

Решение

К счастью, Docker понимает необходимость поддержки больше, чем просто Linux для операционной системы хоста.

Во второй половине 2016 года Докер выпустил официальный Докер для Mac и Docker для Windows Пакеты программного обеспечения.

Это сделало невероятно простым для установки и использования докера на обоих этих операционных системах. С регулярными обновлениями функции и функциональные возможности практически при соотношении с вариантом Linux. Вряд ли нет разницы, и я не могу вспомнить, в последний раз мне нужен вариант или функция, которая была недоступна в этих версиях.

Хотите установить Docker для Mac или Windows?

WatchMecode имеет Бесплатно Установка эпизодов для обоих (а также Ubuntu Linux!)

Миф № 4: Docker только командная линия

И я значительно более эффективен с визуальными инструментами

С ним рождения в Linux не удивительно, что Docker предпочитает инструменты командной строки.

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

Решение

По мере роста сообщества вокруг Docker есть все больше и больше инструментов, которые соответствуют предпочтениям все больше и больше разработчиков — включая визуальные инструменты.

Docker для Mac и Windows включает в себя базовую интеграцию с kitematic, например — графический интерфейс для управления документами докеров и контейнеров, на моей машине.

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

Хотите увидеть kitematic в действии?

Проверьте Китематический эпизод В WatchMecode’s Руководство по изучению докера Отказ

Миф № 3: Я не могу запустить свою базу данных в контейнере.

Это не будет масштабироваться должным образом … И я потеряю свои данные!

Контейнеры должны быть эфемерными — они должны быть разрушены и повторно созданы по мере необходимости, без колебаний. Но если я храним данные из базы данных в моем контейнере, удаление контейнера удалит мои данные.

Кроме того, системы баз данных имеют очень специфические методы, в которых они могут масштабироваться — как вверх (более крупный сервер) и OUT (больше серверов).

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

Итак … Да … это правда. Это не хорошая идея, чтобы запустить Производство База данных в контейнере докера.

Однако мой первый настоящий успех с Docker был с базой данных.

Oracle, чтобы быть конкретным.

Я пытался и не смог установить Oracle на виртуальную машину, для моих потребностей в разработке. Я провел почти 2 недели (выкл и на), работаю над ним, и даже не приблизился.

Однако в течение 30 минут обучения о том, что есть изображение Oracle XE для Docker, однако у меня была Oracle Up и работает и работает.

В моем Развитие окружающая обстановка.

Решение

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

Теперь я бегал MongoDB, MySQL, Oracle, Redis и другие данные данных/настойчивости уже некоторое время, и я не мог быть счастливее об этом.

И, когда дело доходит до «эфемерной природы контейнера докеров? Объемные крепления.

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

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

Миф № 2: Я не могу использовать Docker в моем проекте

потому что докер все или ничего

Когда я впервые посмотрел на Docker, я подумал, что это было правдой — вы либо разрабатываете, отладки, развертывание и «развернувшись» с докером (и двухсотом дополнительными инструментами и каркасами, чтобы сделать его всеми работами, автоматически), или вы не докера вообще.

Мой опыт с установкой и запуском базы данных, как мой первый успех с Docker, показал мне иначе.

Любой инструмент или технологии, которые требуют всего или-ничто, не должны переоценить с экстремальным микроскопом. Это редко (за пределами редкого), что это правда. И когда это так, это может не быть чем-то, в котором следует инвестировать время и деньги.

Решение

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

Начать маленький.

Запустите базу данных разработки в контейнере.

Затем постройте одну библиотеку внутри контейнера Docker и узнайте, как он работает.

Создайте следующее микросервис — тот, который требует всего несколько строк кода — в контейнере, после этого.

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

Нет необходимости ехать все или ничего.

Миф № 1: Я не буду выиграть от Docker … вообще …

Потому что Докер — это «Предприятие», а «дежопт»

Это было одно самое большое ментальное препятствие, которое я должен был удалить, когда я впервые посмотрел на Докер.

Докер, в моей голове, была эта великая вещь, которая только самая продвинутая команды с проблемами масштабируемости, которые я никогда бы не увидим, пришлось иметь дело с.

Это не удивительно, что я тоже так думал.

Когда я смотрю на весь гуд и шумилизацию в мире блога и переговоры по конференции, я ничего не вижу, кроме как «Большой название — компания автоматизировала 10 000 000 микросервисов с Docker, Kubernetes и Shiny-New-Netflix-Scale-Scale».

Докер может преуспеть на «Предприятие и« Девоп », но в среднем, каждый день разработчик — как вы и я — можете воспользоваться тем, что должен предложить Docker.

Решение

Дайте докер попробовать.

Опять начинайте маленький.

Я запускаю одну виртуальную машину с 12 ГБ ОЗУ, чтобы провести 3 веб-проекта для одного клиента. Это скудный сервер, чтобы сказать наименее. Но я смотрю на Docker — просто обычный старый докер, само собой — как способ более эффективно использовать этот сервер.

У меня есть второй клиент — с общей частью 5-разных разработчиков неполных частей (охватывающих в общей сложности менее 1 часы полного времени.

Я строю большую часть своих библиотек открытых исходных кодов для приложений Node.js, с Docker, на данный момент.

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

И помни …

Не покупайте шумиху или не верьте Мифы

Мифология вокруг Докера существует зря.

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

Но мифология, к сожалению, мало что помогает разработчику, которое может принести пользу больше всего: вы.

Если вы оглядываетесь в этот список мифов, правдоподобных и решений, все еще говоря: «Да, но …», прошу вас занять некоторое время и переоценить, что вы думаете о Docker, и почему.

Если у вас все еще есть вопросы или проблемы о том, как Развитие Окружающая среда может воспользоваться Docker, связаться Отказ Я хотел бы услышать ваши вопросы и посмотреть, есть ли, что я могу сделать, чтобы помочь.

И если вы хотите узнать основные основы Docker или как разрабатывать приложения внутри него, но не знаете, с чего начать, проверить WatchMecode Руководство по изучению докера (с земли вверх) и Руководство по созданию приложений Node.js в Docker Отказ

Оригинал: «https://dev.to/derickbailey/10-myths-about-docker-that-stop-developers-cold»