Рубрики
Uncategorized

Обещание контейнеров докеров

Эй, ребята! Мой последний пост под названием Как включить контейнеры в свои ежедневные пошлины, было все о H … Теги с DevOps, Docker, производительностью, Linux.

Обучение DevOps на открытом воздухе (7 части серии)

Эй, ребята! Мой последний пост, названный, как включить контейнеры в свои ежедневные пошлины, было все о том, как вы можете использовать контейнеры, чтобы улучшить свою работу в качестве разработчика.

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

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

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

  2. Демо-прохождение построения изображений на основе стека лампы CentOS с нуля и вращается вверх по контейнеру для обслуживания веб-приложения.

Я также обновил дополнительные ресурсы в конце этого, чтобы они были текущие ссылки/документы/установщики по состоянию на 31 июля 2019 года.

Надеюсь, ты повеселишься!

Обещание контейнеров

Как веб-разработчик, я уверен, что вы построили сервер или два. Вы, вероятно, поверните в поле Linux и установили некоторые пакеты, такие как Apache, MySQL или PHP. Может быть, вы вытащили некоторые из ваших кодов из GitHub, объединяли базу данных и отредактировали некоторые файлы конфигурации, чтобы согнуть сервер по своему вкусу.

(Если вы еще не построили сервер и заинтересованы в изучении того, как, проверьте мою информацию. Телесский курс под названием «Введение в администрацию сервера». — https://www.udemy.com/introduction-to-server-administration/ Несомненно

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

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

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

«Но Генри, что в мире есть контейнеры и почему я должен заботиться о них?»

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

«Да … ты можешь сделать это проще?»

Я уверен, что может. Самый простой способ объяснить контейнеры состоит в том, чтобы сравнить их с виртуальными машинами (VM). Один из методов для запуска трех разных приложений на одном сервере — запуск трех разных VM, которые состоят из операционной системы, приложения и каких-либо зависимостей, которые требуется приложение для запуска. Контейнер в контексте этого примера — это пучок минимума кода и зависимости, необходимых для запуска приложения. Docker функционирует как гостевая операционная система для любого количества или типа контейнеров. Очевидное преимущество заключается в том, что он гораздо более ресурсоиспользуется, чем запуск нескольких виртуальных машин.

Источник: https://images.idgesg.net/images/article/2017/06/virtualmachines-vs-containers-100727624-large.jpg

«Слово. Это начинает иметь смысл. Нарисуйте мне слово картина. «

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

1. Скорость

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

2. Простота использования

В дополнение к скорости, способность быстро раскручивать экземпляры инфраструктуры, которые вам нужны в любой момент, могут стать великим моментом вашей организации. Допустим, приложение, которое вы строят, попадают на переднюю страницу Reddit, и ваш трафик выходит из-под контроля. Вы также можете взломаться и попросил свой сайт в автономном режиме. В любом случае, вам нужно быстро вернуться в Интернете. Ваш бизнес очень хорошо может зависеть от этого. По крайней мере, девять из десяти раз, Запуск контейнера быстрее, чем строить свежий сервер.

3. Безопасность

Основным принципом контейнеров является то, что они являются садами для стен. Первоначальная выгода заключается в том, что вы можете объединить приложения с соответствующими зависимостями, так что если контейнер нуждается в PHP5 и контейнере B, нуждается в PHP7, что можно обрабатывать без необходимости беспокоиться о столкновениях зависимости. Две контейнеры могут бежать бок о бок, но они не попадут друг на друга.

Стеновый садовый подход также означает, что вы можете точно определить, как вы хотите, и если вы хотите, чтобы данные, пропущенные в контейнере. Вы увидите в демо, чтобы мы явно рассказываем наш контейнер к «разоблачению 80». Это говорит, что все в порядке, чтобы открыть порт 80 в контейнере к более широкой системе, на которой мы работаем, чтобы Apache может выполнять свою работу и содержимое хоста по этому порту. Когда вы начинаете строить более сложные системы с Docker, вы можете использовать такую безопасность для соединения определенных контейнеров, работающих на приложениях до других конкретных контейнеров, содержащих базы данных, имеющих базы данных или выполнение некоторых конкретных микросервисов.

4. Портативность

Поскольку контейнеры (в упрощенном представлении) предназначены для приложения, упакованного с голым минимальным минимумом ресурсов, которые необходимо правильно запустить, вы можете запустить этот контейнер на все, что может запустить Docker. Будь то на Red Hat Enterprise Linux, ваш MacBook Pro или Windows Server 2016, этот контейнер будет вращаться и функционировать точно так, как он должен.

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

5. Управляемость версии

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

Docker Demo.

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

https://docs.docker.com/install/

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

1 — Создать dockerfile

Во-первых, сделайте новый каталог проекта и создайте файл с именем Dockerfile , который является списком инструкций о том, как создать систему сверху базового изображения. Базовые изображения могут быть основаны вокруг языков, таких как PHP, проход, как узлы или операционные системы, такие как Ubuntu. Они обычно предоставляются сопровождающими исходного продукта. Это означает, что они построены создателями программного обеспечения, специально для работы с докером.

Затем нам нужны инструкции о том, как строить поверх этой базы. Есть команды, которые мы можем использовать, например: Беги , Добавить и CMD Отказ Они управляют командами уровня Shell, отображают файлы из хоста в контейнер и указывают команды для загрузки с уважением. Мы принимаем шаги настройки сервера и переведете их в задачи, которые Docker можно использовать для автоматизации процесса.

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

Ради простоты мы собираемся создавать очень простое изображение. Наш DockerFile будет следующим образом:

# Dockerfile
# Basic Setup

FROM centos:7
LABEL maintainer="henry@tld.com"

# Update repos and install httpd
RUN yum -y update && \
    yum -y install httpd && \
    yum clean all

# Expose a port from the container to Docker and run the startup script on launch
EXPOSE 80
CMD ["/usr/sbin/apachectl", "-DFOREGROUND"]

DockerFile читает удивительно, как английский. Все это говорит, что мы хотим использовать Centos y в качестве основы, установить Apache, выдержать порт 80, чтобы отобразить другой хост-порт, и запустить Apache на загрузке.

2 — Создайте свой образ

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

Во-первых, нам нужно открыть наш терминал и войти в каталог, который содержит нашу DockerFile. Для меня этот каталог это ~ hquinn/dev/fordevto/thefutureisdocker/dockerdemo/ .

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

--rm Обозначает, что мы хотим автоматически удалять промежуточные контейнеры, которые генерируются во время процесса сборки, -t hquinn/dockerDemo Помещает нашу сборку с именем, чтобы мы могли легче обратиться к нему позже, а Отказ В конце указывает, что мы хотим запустить эту команду в настоящем рабочем каталоге.

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

3 — Проверьте свое изображение

После того, как Докер вытягивает основание, мы решили использовать (Centos 7), устанавливает Apache, и завершает все другие инструкции, нам дают готовое изображение, которое называется на основе тега в команде сборки. Вы можете увидеть его (и базовое изображение CentOS 7), перечислив изображения Docker в вашей системе.

4 — раскрутить контейнер

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

(Здесь, я использую образец проекта от LTP Dave Moran под названием «Узнайте SASS и SCSS» — https://www.udemy.com/learn-sass-and-scsss/ )

Эта команда говорит Docker, чтобы запустить контейнер на основе изображения, который мы просто строим, но это было несколько других параметров. -d говорит докер запустить контейнер как демон (на заднем плане), -P 80 Чтобы карта порта 80 на контейнере в порт на хосте, чтобы он мог просматривать через браузер, --название Project1 опять же, чтобы назвать ресурс, а также - Mount/app/, target =/var/www/html/ рассказывает докерровать нашу местный ./приложение/ каталог для /var/www/html/ В контейнере, чтобы Apache может провести его для нас.

5 — Проверьте свой контейнер

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

Мы видим, что бегущий контейнер с именем Project1 Сопоставил наш локальный порт 32769 в порт 80 на контейнере (хост-порт может отличаться на вашем компьютере). Если мы открываем браузер и отправьтесь до localhost: 32769 , мы видим наш код бежать в прямом эфире.

6 — Оставьте в оболочку вашего контейнера

Это все, что есть к этому. Мы могли бы продолжать движение в разные каталоги, имеющие базовые приложения HTML/CSS/JS в подкаталоге, называемом ./app/ и продолжать использовать эту же команду для создания большего количества контейнеров. Каждый разрядится, на карте этого кода /var/www/html/ и назначьте порт на localhost каждому контейнеру.

Мы можем проверить, что контейнер потянут в наш код, запустив команду Docker, которая дает к нему доступу Shell. Это заставит нас прямо в корню этой системы CentOS в качестве пользователя root. Если мы посмотрим в веб-каталоге, мы видим, что он вытащил наши файлы и использует Apache для их размещения, так же, как и на традиционном VPS.

7 — очистить

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

Контейнеры эфирные. Как только один остановлен с Докер Стоп Команда, мы могли бы вращаться вправо, и это будет идентично в первый раз, когда мы начали его. Чтобы избавиться от остановленного контейнера, у нас будет работать Docker RM команда. Чтобы избавиться от изображения, на котором он был основан, мы бы запускали Docker RMI команда.

Outro.

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

Кроме того, это просто очень маленький вкус того, что может сделать докер. Ваши сборки могут быть такими же простыми или сложными, как вам нужно. Например, у меня есть одна сборка, которая состоит из группы из трех контейнеров: один запускающий приложение узла, другой контейнер, работающий по PostgreSQL с постоянством данных через помощь объема данных, а также третий выступающий в качестве кэша запроса.

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

Дополнительные ресурсы

Статья и соответствующий код Установщики Docker Desktop Edition Docker Начало работы Руководство Docker Labs — Катакода Документация Dockerfile

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

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

Кроме того, части для моей малины Pi K8s Bramble все медленно идут по почте. Просто жду на моей охлаждающей стойке завтра днем. Не могу дождаться, чтобы начать надевать это вместе и создавать еще несколько контента для всех вас.

До тех пор оставайся морозным.

https://henryneeds.Coffee Блог LinkedIn Твиттер

Обучение DevOps на открытом воздухе (7 части серии)

Оригинал: «https://dev.to/quinncuatro/the-promise-of-docker-containers-57fd»