Рубрики
Uncategorized

Докер учиться # 03: Узы из Силиконовой долины

Серия постов Алексей Ортиза образования, как он узнает Докер. Теги с докером, контейнерами, дежопами.

Докер учиться (7 части серии)

Я пошел в кремниевую долину в прошлые выходные для кодового Camp Cired Code SVCC 2019, состоявшейся в Глобальной штаб-квартире Paypal. Вот я выгляжу загибенным на одном из многих очень удивительных переговоров:

От «Cirety Code Code Code Camp Subbiry» Peter Kellner

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

Во-первых, вот были сеансы, которые я посещал. Где придумал Докер, я пометил это с Докер :

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

Усыновление контейнера за последние три года Может удвоить в следующие три

Обследование контейнеров 2019 года прогнозирует, что технологии контейнерных технологий станут рынок в размере 4,3 млн долларов к 2022 году, удвоили то, что сегодня (2,1 млрд долларов). Чтобы добавить это в контекст, Дэйв Ньюмент объяснил, что 87% его администраторов, которые ответили на этот опрос в этом году, управляют контейнерами, а 90% этих контейнеров находятся в производстве. ИТ-админов, которые ответили, 65% используют два или более инструментов оркестрации, такие как Kubernetes. (Всего три года назад 72% респондентов сказали, что нет, они не использовали службы оркестров. К прошлому году числа поднялись только немного, только с 34% респондентов, которые говорят, что они используют Kubernetes. Так что эти фигуры с 2019 года впечатляют).

На этой ноте, если вы знаете контейнеры, вы знаете, насколько популярны технология оркестровки Google Kubernetes. На Kubernetes Repo на Github , вы можете увидеть, что у него 84 000+ коммит, 2200+ открытых вопросов, а также замкнутые 30 000 вопросов, которые закрываются.

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

Маленькая история Go и его выбор как для докера, так и для Кубера

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

Google хотел три вещи:

1) Простота программирования 2) Эффективное исполнение 3) Эффективная компиляция

После того, как не нашли язык, который мог бы достичь всех трех, и желая использовать язык, который может воспользоваться многократной обработкой, Google спросил Ken Thompson (B, C, Unix и UTF-8), Robert G (Hotspot и JVM ), и ограбить щуку (также Unix, UTF-8) для создания такого языка, и пойти был результатом.

Кубернаны и идут оба исходя из Google, я понимаю, зачем ехать был очевидным выбором, чтобы написать Куберов. Что интересно, это то, что Docker также написан. Возможно, пойти было выбрано для докера из-за репутации Go как сознательное, тип безопасностью и быстрым языком, или это могло быть совпадение.

Альтернативы докера?

Я заметил, что у докера был самый сильный слов устья какая-либо контейнерная платформа по всей конференции. Есть и другие двигатели времени выполнения контейнера, такие как Контейнер и кореос RKT. . Но Docker — это безусловно, самый популярный контейнерный время выполнения сегодня.

Даже в корпоративном пространстве Docker является главным соперником в настоящее время. Оба Google Via Kubernetes и IBM через Red Hat OpenShift обеспечивают тяжелое использование контейнерной инфраструктуры Docker. Но будет интересно посмотреть, появляются ли какие-либо жизнеспособные альтернативы Docker в ближайшие годы, на предприятии или за его пределами. Одно пространство, чтобы посмотреть, может быть относительно новое предложение Google, Кнативы («Kubernetes встречает Serverless»), который разбивается как лучший из контейнеров плюс лучший из архитектуры FAAS и PAAS. Я пока не знаю достаточно об истории контейнеров Linux, о том, почему докер стал настолько популярным, и о том, что докер лучше, чем кто-либо другой на техническом уровне, и уровень сообщества, чтобы стать таким привлекательным и широко принятым, но на тех ничто не вечно. Даже верхние уровни, гипер-популярные действующие технологии в конечном итоге разрушаются, а иногда и быстро.

Что бы это займет? Это Elon Musk цитата довольно актуален на этом моменте:

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

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

Чтобы понять безопасность докеров, Понять безопасность Linux.

Когда я слышал в лекции Sunil Sabat, принципы безопасности за Docker (и Kubernetes) фактически опираются на основные фонды безопасности, известные тем знакомую с экосистемой Linux. Лучшие практики, применяемые к ядрам Linux Trans Trans Transly к контейнерам Linux и кластерами Kubernetes и Pods.

Строительные блоки — это такие вещи, как

  • Пределы ресурсов О процессоре и использовании памяти и запросов
  • Ядро пространства имен
  • Контрольные группы (CGUP) Для безопасности выполнения и обеспечения изоляции
  • Обязательный контроль доступа (Mac)
  • Профили безопасности, политика и особенности, такие как Apparmor , Selinux , и teccomp.

Все довольно продвинутые вещи, но и все актуальные для «цепочки поставок контейнера», которая расширяет FRO Linux в Docker в Kubernetes и на облачных платформ, таких как AWS или GCP.

Еще несколько Tidbits.

Подробнее о конференции, что я узнал на конференции, но вот круглое другое представление:

  • Прохладный новый концепт/термин подслушан: Предпогревенные контейнеры Отказ Это актуально в ситуациях, когда вы хотите избежать длительного «периода холодного начала» для контейнерных изображений, которые не работали в течение нескольких недель
  • С Google Cloud Run , который является управляемой платформой для контейнеров без природы, можно заставить Google запустить для вас контейнеры, и вы можете позже вы можете выбрать свой собственный контейнерную инженеров OPS
  • Я слышал прохладный пример использования контейнера для запуска приложения PDF PDF с открытым исходным кодом для автоматического конвертации документов Word в PDFS на GCP
  • Мартин Опумандер из Google говорит, что он недавно получил приложение Cobol Hello World, бегущее в контейнере:)
  • С платформами FAAS/PAAS, как IBM OpenWhisk, вы можете «запускать что-нибудь в Docker как функцию»
  • Больше от IBM: я видел презентацию о том, как ее Модель активов Exchange (MAX) и Обмен активов данных (DAX) Может быть использован для A) Найти алгоритмы глубокого обучения с открытым исходным кодом, B) Найдите наборы данных с открытым исходным кодом, а затем C) Используйте контейнеры Docker, чтобы развернуть легкие нейронные сети для анализа данных. Другими словами, вы можете запустить модели обучения машин в качестве микросервисов, использующих Docker. Вау!

Было больше, но это все, что я могу сжать на эту неделю. Но не до некоторого бонуса Q & A!

Как я узнаю, я отвечаю на вопросы. Вот несколько я ответил на этой неделе.

С целью докера

Q: Какова цель докера?

Вот мой Ответ :

Цель докера — помочь вам Создание и развертывание контейнеров Linux легко, портативно и надежно Отказ Для некоторых технологических архитектур и использования случаев использования, запуск приложений на локальной машине или виртуальной машине вносит много смысла, но для ситуаций, когда вы хотите запустить приложения или задачи без гражданства, которые могут быть быстрыми контейнерами, а также и развертываться в десятках, а также Даже тысячи пользователей, контейнеры Linux иногда есть способ пойти. Когда это так, Docker дает вам механизм создания этих контейнеров (используя Docker Images ).

На каких докерафах для

Q: Что такое DockerFile для докера?

Вот мой Ответ :

А Dockerfile Документ открытого текста, в котором вы перечисляете инструкции Docker, необходимо использовать для создания Docker Image Отказ Из этого Docker Image Docker Containers позже может быть сделан и запущен. (Контейнер — это один процесс, задача или приложение.)

Инструкции в DockerFile включают инструкции, такие как

  • который Базовое изображение (Например, какая операционная система Linux) работает ваше приложение;
  • какие команды бегать или Зависимости приложений установить
  • файлы или каталоги, которые должны быть скопировано к контейнеру Docker, чтобы ваше приложение было правильно работать
  • который Порты должны быть выставлены (если применимо) для вашего приложения на работу
  • И много больше

Вся эта информация в Dockerfile затем используется вашим хостом Docker (сервером или демоном) для создания Docker Image Это можно использовать и повторно использовать для создания любого количества контейнеров.

В разнице между двумя аналогичными и выглядящими командами Docker

Вопрос: Каковы различия между «Docker Run» и «Docker Create»?

Вот мой Ответ :

Инструкция Docker Run Это действительно комбинированная команда двух инструкций в одном: Docker Создать + Докер начать :

  1. Docker Создать строит ваш контейнер от образа докера
  2. Докер начать инстанцирует контейнер

Будут ситуации, в которых вы хотите создать контейнер без наступления его. Если это так, вы бы использовали Docker Создать , а позже, вы бы использовали Докер начать Отказ

Вот пример.

Допустим, вы создаете три контейнера Linux на основе последней версии Alpine. Предположим, вы называете их Контейнер1 , Контейнер2 и контейнер3. Так что вы можете обратиться к ним с этими пользовательскими именами, а не с именами по умолчанию или идентификаторами контейнера.

Вы бы использовали следующие команды:

docker create --name="container1" alpine:latest sleep 600
docker create --name="container2" alpine:latest sleep 600
docker create --name="container3" alpine:latest sleep 600

Вот компоненты этих инструкций:

  • Docker Создать это инструкция для создания контейнера
  • --name = "custom_name" Указывает пару клавишной пары, имеющую имена контейнера
  • Alpine: последние это изображение докера, из которого экземпляр контейнера сделан
  • Спать 600 это команда Linux (объяснена ниже)

Примечание. Alpine — это легкая операционная система Linux, а не приложение или процесс, поэтому, если вы использовали Докер создать альпий: последние , без команды сна, то докер создал бы альпийский контейнер, но немедленно Выйдите из него, потому что внутри этого контейнера ничего не происходит. Итак, ради этого примера мы поддерживаем наши три альпийские контейнеры, работающие в течение 10 минут, используя команду Sleep Linux, установленную на 600 секунд.

Таким образом, Docker позволит вам создать три альпийских контейнера для вас, каждый оставшийся активен в течение 600 секунд, то есть десять минут. Но три контейнера еще не будут бежать.

Если вы проверили это, набрав Docker PS-A В командную строку Docker ваши три контейнера появятся с Статус «Созданного».

Теперь приходит важная часть. Так как вы использовали Docker Создать Команда, вы могли бы выборочно запустить одну из этих контейнеров на воле. Например, Контейнер1 :

docker start container1

Теперь Контейнер1 появится с Статус «вверх» и Контейнер2 и Контейнер3 будет продолжать появляться с Статус «Созданного», как и раньше.

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

Таким образом, Docker Run Создает и сразу начинает контейнер, тогда как Docker Создать Позволяет создать контейнер без начать его. Это дает вам гибкость для начала и немедленно запускать контейнеры, когда вам нужно, пока они также смогут создавать контейнеры, которые вы не делаете. Например, если вы хотите запустить команду внутри контейнера, который уже был создан и Уже работал, не имеет смысла использовать команду Docker Run , как эта команда всегда создает Новый (дополнительный) контейнер. Вы бы просто использовали Docker Создать а потом Докер начать вместо.

🙂

Некоторые полезные ресурсы

Вот несколько предметов, которые я нашел полезным в прошлом неделе:

И с этим я говорю прощание с другой недели докера. Увидимся в следующий раз!

Нажмите кнопку следуйте, и обязательно оставайтесь в курсе всех потрясающих работ, которые делают мои команды в Educative.io и в нашем Сообщество Edpresso . Они потрясающие, и вы должны следовать за ними в Twitter в @educaticinc. и @edpressoc. , соответственно.

Докер учиться (7 части серии)

Оригинал: «https://dev.to/alexoeducative/docker-learn-my-learning-journey-with-docker-03-8jl»