Автор |
Сообщение |
Nord Freeman ®
RG Книги
Куратор Книг
Стаж: 12 лет 7 мес.
Сообщений: 6459
Ratio: 6943.98
Раздал: 133.8 TB
Поблагодарили: 620070
100%
Откуда: The Pirate Bay
|
Dmdev, Dzianis Matveyenka | Docker (2024) WEB-DL [RU]
Автор: Dzianis Matveyenka Производство: DmdevЖанр: Видеокурс Описание:В современном мире разработки ПО распространена микросервисная архитектура и облачные технологии, где давно ушли от разворачивания приложений на одном единственном сервере. На этом курсе мы поговорим о том, какие проблемы и решения проблем на одном сервере появлялись, как изобрели аппаратную виртуализацию, а затем и виртуализацию на уровне операционной системы благодаря Linux Namespaces, и почему в настоящий момент встречается гибридная форма виртуализации. Пройдя этот курс, ты уверенно овладеешь Docker и поймешь: - как создавать свои собственные Docker образы - как поднимать Docker контейнеры и их жизненный цикл - различные storage & volumes для хранения информации - как настраивать networking для общения между контейнерами и пользователями - как упростить работу с Docker, заменив императивный подход на декларативный с помощью Docker Compose Продолжительность: 05:41:33 Качество видео: WEB-DL Язык озвучки: Русский 1. Docker. Введение На вводном видео курса по Docker мы разберем в двух словах, что такое в принципе Docker, зачем нам его изучать, какие аспекты Docker будут разбираться в данном курсе и конечно необходимый багаж знаний, который нужен для успешного и комфортного прохождения этого курса.
2. История возникновения Для того, чтобы понимать смысл создания той или иной технологии, очень полезно знать историю ее возникновения. Именно поэтому на этом видео мы разберем с вами, как все начиналось от одного единственного сервера, какие проблемы и решения проблем на нем появлялись, как изобрели аппаратную виртуализацию, а затем и виртуализацию на уровне операционной системы благодаря Linux Namespaces, и почему в настоящий момент встречается гибридная форма виртуализации.
3. Устанока ПО Для прохождения курса нам необходимо установить соответствующее программное обеспечение. Чтобы понять, почему нам нужно 3 разных приложения (Docker cli, Docker Compose, Docker Server) для работы с Docker, мы вначале видео познакомимся с High-Level Docker Architecture. После успешной установки и запуска Docker Desktop мы проверим корректную работы всех 3 приложений.
4. Особенности Docker на Windows и MacOS У нас есть возможность установить и затем работать с Docker на любой платформе, хоть мы и знаем, что виртуализация на уровне операционной системы требует именно Linux Namespaces. Поэтому на видео разберемся, как можно воспользоваться комбинацией удачной архитектурой Docker и гибридного варианта виртуализации, чтобы на любой платформе работать с Docker.
5. Image Для того, чтобы более менее освоиться с Docker, нам необходимо изучить 4 основные темы: Image, Container, Storage & Volumes, Networking. На этом видео мы начнем с самого первого и базового - это Docker Image (образ). Разберем, из каких основных частей он состоит (Metadata & Layers), что такое слои образа, какая польза от разбиения образов на такие слои и т.д. В заключение разберем 2 команды для работы с образами: docker images и docker image inspect.
6. Docker Registry Всего существует два варианта получения docker образов: создать его вручную и скачать уже готовый, который был сделал кем-то вместо нас. На видео мы продемонстрируем самый простой вариант - это скачивание уже существующего из Docker Hub с помощью команды docker pull. Также рассмотрим в деталях процесс работы команды docker pull и попрактикуемся выполнять ее на практике в терминале.
7. Container Вот мы и дошли до следующего основного этапа в понимании Docker - это контейнеры. Проще говоря, образ - это шаблон, на основании которого в последующем создается контейнер. Для него Docker Engine выделяет необходимое количество ресурсов, запускает один или более процессов (потому что ни один контейнер не может существовать без запущенного процесса внутри него), и следит за его жизненным циклом, про который мы поговорим уже на следующем занятии.
8. Container Lifecycle. create command У каждого docker контейнера есть свой жизненный цикл, который состоит из 6 основных состояний: created, running, restarting, paused, exited, removing. Наша задача разобраться с каждым из этих состояний, и начнем мы с самого первого - это created, который позволяет собственно создать контейнер на основании любого docker образа. Для отслеживания состояния всех контейнеров нам необходима команда docker ps -a (либо docker ps для просмотра только запущенных контейнеров). Также на видео почитаем документацию этой команды и на практике опробуем ее.
9. Container Lifecycle. start command На этом видео мы наконец-то сможем запустить свой первый docker контейнер с помощью специальной команды docker start. Изучим в теории нюансы работы этой команды, обратимся к официальной документации для изучения всевозможных вариантов ее запуска, а также залезим внутрь директории /var/lib/docker, чтобы увидеть как выглядит и что содержит выделяемая директория под каждым docker контейнер.
10. Container Lifecycle. stop & kill commands На предыдущем занятии мы видели, что контейнер автоматически переходит в состояние Exited, когда процессы внутри него заканчивают свою работу. А все потому, что контейнер не может быть в состоянии Running без как минимум одного работающего процесса внутри него. Поэтому на этом видео мы рассмотрим этот статус более подробно, а также две новые команды stop & kill, с помощью которых мы можем умышленно остановить процессы внутри контейнера и перевести его в статус Exited.
11. Container Lifecycle. rm command На этом видео мы разберем еще одну команду, которая удалил неиспользуемый контейнер - это docker rm. Во время удаления контейнер уже должен быть в статусе Exited, потому что команда rm просто удаляет writable layer, который использовался для хранения изменений о жизнедеятельности процессов внутри контейнера. Поэтому на практике попробуем удалить запущенный контейнер и посмотрим, что произойдет.
12. Container Lifecycle. pause & unpause commands Следующее состояние в жизненном цикле docker контейнеров - это Paused. Суть его заключается в том, чтобы временно приостановить все процессы внутри контейнера с помощью freezer cgroup и освободить CPU, которым в свою очередь могут воспользоваться другие контейнеры, выполняющие сложную работу. Для того, чтобы восстановить работу процессов внутри этого контейнера и вернуть CPU - нужно просто выполнить обратную операцию unpause. Для демонстрации этого статуса нам понадобится еще две новые второстепенные команды - это docker logs и docker stats.
13. Container Lifecycle. restart & run commands На этом видео мы пройдем заключительный статус, в котором может быть контейнер - это Restarting. Для этого мы воспользуемся новой для нас командой restart и в нюансах разберемся, почему мы можем ее использовать из 3-х других статусов: Created, Running, Exited. Также изучим более удобную команду run, которая заменяет собой две другие: docker create & docker start, чтобы ускорить процесс создания и одновременного запуска контейнера.
14. Docker exec command Docker позволяет выполнять любые команды внутри контейнеров точно так же, как мы это можем делать на своей host машине, т.е. просматривать текущую директорию, создавать файлы, записывать туда информацию и т.д. И для этого мы разберем новую команду - docker exec. Также посмотрим вариант вызова уже изученный команды docker run, которая тоже позволит зайти внутрь контейнера, чтобы вызывать любые bash команды внутри него.
15. Docker cp & diff commands Как заходить внутрь контейнера и выполнять различные bash команды мы уже прекрасно знаем. Но что, если мы захотим перемещать директории и файлы между контейнерами и нашей host машиной? Для этого и существует специальная команда docker cp, которая позволит выполнять такие перемещения. Более того, есть и другая команда docker diff, которая отображает все изменения внутри контейнера, а точнее - содержит информацию о writable layer, который и нужен для хранения жизнедеятельности контейнера, потому что слои образа изменить невозможно.
16. Storage & Volumes Как уже было сказано ранее, writable layer не единственный вариант изменения файловой системы внутри docker контейнера. Существуют и другие, которые во многом являются более предпочтительным. Про них мы будем более подробно разбираться на следующих занятиях, а пока наша задача на этом видео: понять, что вся файловая система контейнера - это всего лишь различные проекции на файловую систему внутри нашей host машины.
17. bind mount type Первый из трех mount types, который мы будем разбирать в видео - это bind mount. Он является проекцией файловой системы host машины. Поэтому из docker контейнера можно получить к ним read & write доступ. Предпочтительным флагом для настройки mount types является --mount, потому что как показала практика - он более удобен как универсальный флаг для всех mount types, и легче запоминается человеком. К сожалению, bind mount имеет некоторые недостатки, из-за чего его не следует использовать в production. Например, производительность довольно низкая на операции read & write, а также большая зависимость от операционной системы host машины, что усложняет в дальнейшем миграцию docker контейнера на другие машины.
18. tmpfs mount type Второй из трех mount types, который мы будем разбирать в видео - это tmpfs mount. Он использует memory host машины, поэтому является самым быстрым из всех mount types, но не оставляет информации на жестком диске после остановки контейнера. К сожалению, tmpfs mount имеет некоторые ограничения, из-за чего его не получится использовать на операционных системах отличных от linux. Также попробуем запустить контейнер с несколькими сконфигурированными mount types одновременно.
19. volume mount type Заключительных третий mount types, который мы будем разбирать в видео - это volume mount. Он является самым распространенным ввиду его очевидных достоинств, таких как: отличная производительность (поэтому и является предпочтительным для контейнеров баз данных), долговременное хранение информации на жестком диске, последующая простая миграция на другую host машину при необходимости, и другие. Конечно, придется отдельно управлять созданием/удалением volumes, потому что они отделены от жизненного цикла контейнера. Поэтому их также можно использовать между несколькими контейнерами.
20. Networking Networking - это одна из 4-х основных тем, чтобы понимать Docker и все его последующие более сложные темы, такие как создание своих собственных docker images, как работать с docker compose и другое. Т.е. все то, что мы будем проходить в последующем на этом курсе. И конечно, без настройки сети все еще не получится добиться полной изолированности контейнера, поэтому нам и приходит на помощь следующий Linux Namespace - NET. На видео разберем суть Docker Networking и вкратце пройдемся по всем 4-м основным Network Drivers, которые более подробно будем разбирать в последующих видео.
21. Bridge Driver Первый и самый распространенный Network Driver, с которого мы начнем разбираться - это Bridge Driver. Он используется по умолчанию, когда мы стартуем любые контейнеры на нашей локальной машине, если мы явно не указываем другую сеть через параметр --network. На видео создадим 2 контейнера, привяжем их к сети bridge, которая использует Bridge Driver, и зайдем внутрь одного из контейнеров, чтобы проверить доступ к сторонним ресурсам и контейнерам внутри той же сети.
22. User-defined bridge network bridge network, которая используется по умолчанию в Docker - считается legacy и не рекомендуется к использованию в production. Поэтому наша задача пойти по принятому пути - это создание своей собственной сети, используя Bridge Driver. Такая сеть будет иметь несколько преимуществ над bridge network по умолчанию, например, лучшая изолированность, возможность использовать имена контейнеров внутри этой сети как dns, вместо ip адресов, и другие. На видео попробуем создать две user-defined bridge networks и 4 контейнера в них, чтобы продемонстрировать все возможности.
23. Port forwarding Чтобы подключиться и работать с приложением, которое находится в изолированном контейнере внутри bridge network, нам необходимо сделать еще один важный пункт: пробросить порт этого приложения во внешний мир. Для этого Docker предоставляет специальный функционал, который называется Port forwarding. Поэтому обычно, когда идет разговор о Port forwarding - имеется в виду именно контейнеры внутри сетей с bridge driver. На видео мы продемонстрируем Port forwarding на примере postgres image. Также обсудим нюансы Port forwarding при работы с Docker на операционных системах MacOS/Windows. И в конце наглядно проверим как происходит проксирование трафика из изолированного контейнера во внешний мир, проходя через gateway bridge network, далее gateway вирутальной машины на Linux OS, и далее к host машине (в нашем случае это MacOS).
24. Host Driver Второй и менее распространенный Network Driver, который мы будем разбирать - это Host Driver. Суть его в том, что нам не нужно создавать и дополнительно конфигурировать новую подсеть. Все контейнеры host network будут автоматически подключены к сетевому интерфейсу Linux OS (в случае MacOS/Windows - это будет виртуальная машина на Linux OS). Отсюда можно сделать вывод, что Host Driver имеет свои плюсы и очевидные минусы, которые мы и продемонстрируем на видео.
25. None Driver Третий и наименее распространенный Network Driver, который мы будем разбирать - это None Driver. Суть его в том, что мы полностью изолируем контейнер по сети, тем самым запрещая как входящий, так и исходящий трафик для него. На видео продемонстрируем его работу и обговорим несколько кейсов, где такой тип драйвера был бы полезен на практике.
26. Create your own image Наконец-то мы дошли до изучения более продвинутой темы, потому что знаем основы Docker: как создавать свои собственные Docker образы. На видео вспомним, что из себя представляют Docker образы, ибо мы до текущего момента использовали их много раз, просто создавали эти образы другие разработчики, а не мы. Затем плавно перейдем к 3 основных пунктам, чтобы понять как собственно создавать свои собственные Docker образы: Dockerfile, Build context, build command. В заключении обсудим как Docker выполняет все эти вещи одновременно для достижения одной единственной цели - созданный Docker образ, который в последующем можно легко переиспользовать.
27. Dockerfile. FROM & ARG instructions На текущем занятии мы создадим свой первый Dockerfile, узнаем формат написания его, как писать инструкции, как оставлять комментарии, и попрактикуемся с двумя базовыми инструкциями, такими как FROM и ARG. Чтобы создать свой собственный Docker образ на основании написанного нами Dockerfile, мы изучим новую команду - это docker build.
28. Dockerfile. WORKDIR & RUN instructions Мы продолжаем разбираться с написанием Dockerfile и на очереди у нас следующие самые распространенные инструкции - это WORKDIR и RUN. Первая устанавливает рабочую директорию, в которой в последующем по умолчанию будут выполняться все другие инструкции, такие как RUN, ENTRYPOINT, CMD и т.д. Также если мы попробуем зайти внутрь запущенного docker контейнера, то мы окажемся именно в последней установленной WORKDIR. Вторая же инструкция чаще всего используется для вызова shell команд, а значит - на практике будет встречаться больше всего. Поэтому с ней мы поэкспериментируем большую часть видео.
29. Dockerfile. ADD & COPY instructions Следующие на очереди самые распространенные инструкции при написании Dockerfile - это COPY и ADD. Обе позволяют копировать директории и файлы внутрь docker образа. Только COPY копирует все из build контекста, а потому без него является бесполезной. В свою очередь ADD может копировать из удаленных серверов (по ссылке), тем самым отсутсвует ограничение build контекста. Тем не менее, на практике нужно предпочитать именно инструкцию COPY, потому что ADD можно легко заменить на RUN, что мы и продемонстрировали на предыдущем занятии. Более того RUN позволяет выполнять любые shell команды, тем самым предоставляя нам больше гибкости (например, удалить распакованный архив за собой и т.д.).
30. Dockerfile. CMD & ENTRYPOINT & EXPOSE instructions Следующие основные инструкции при написании Dockerfile - это CMD, ENTRYPOINT и EXPOSE. Именно они позволяют нам запускать приложения внутри запущенных docker контейнеров, а также пробрасывать порты, чтобы в последующем мы могли извне подключиться к этим приложениям. На видео также разберем разницу между ENTRYPOINT и CMD, и как переписать их при необходимости во время запуска docker контейнера.
31. Build cache Чтобы ускорить сборку docker образов, docker использует так называемый cache, который позволяет переиспользовать слои, что уже были выполнены раньше. Кэш срабатывает автоматически, его не нужно подключать отдельно, но можно отключить при необходимости, воспользовавшись специальный аргументом --no-cache. Также разберемся, почему так важно соблюдать правильный порядок следования инструкций в Dockerfile, чтобы получить максимальную эффективность docker cache.
32. Multi-stage builds Для того, чтобы еще больше улучшить наши финальный образы, уменьшив из размер, количество слоев, и сделать Dockerfile более читабильным - Docker предоставляет механизм, который называется Multi-stage builds. Суть его в том, чтобы разбивать создание образа на шаги (stages). На видео разберем все нюансы его работы и на практике закрепим на примере Dockerfile с предыдущих занятий.
33. Build context На текущий момент мы использовали только локальный build context для создания docker images. Но теперь давайте разберемся со всеми 3 возможными вариантами: локальный, удаленный и отсутствие build context вообще. Каждый из них имеет свои нюансы и варианты использования. Поэтому попробуем пройтись по каждому и закрепить на практике.
34. Image tagging Каждый раз, когда мы создаем docker image - ему присваивается уникальный идентификатор. Но с ним работать не удобно: его сложно запомнить, приходится копировать для всех других docker команд, и он имеет множество ограничений, связанные с загрузкой и скачиванием образов из docker registry. Поэтому на этом видео мы разберем 2 возможных варианта добавления тэгов для любых docker images, которые решают все эти сложности для нас.
35. Push docker images После того, как мы изучили команду docker tag и знаем, как присваивать собранным образам сколько угодно различных тэгов, мы можем использовать эту возможность, чтобы дополнительно добавить к имени тэга host, port и repository. Это позволит нам в дальнейшим выполнить команду docker push и загрузить образ на удаленный репозиторий. Для примера мы залогинимся в Docker hub, создадим там свой репозиторий, и попробуем загрузить сюда свой собственный образ. Для этого нам придется изучить еще несколько команд для прохождения аутентификации - это docker login and docker logout.
36. Local Registry На предыдущем занятии мы попрактиковались с удаленным Docker Registry, увидели как пушить туда свои собственные docker образы, предварительно добавив соответствующий tag. Потому что ключевой момент при работе с Docker Registry - это tag докер образов. И сейчас мы попробуем установить локально Docker Registry, чтобы продемонстрировать возможность работы c абсолютно любым registry.
37. Dockerfile. Best Practices Мы уже много говорили про best practices на протяжении предыдущих видео этого курса, когда создавали свои собственные docker images. Теперь давайте остановимся и резюмируем все сказанное в одном видео, чтобы на следующем практическом занятии еще раз закрепить их у себя в памяти.
38. Практика На текущем практическом занятии наша задача создать Dockerfile, в котором мы сможем установить необходимое программное обеспечение, скачать исходный код java приложение из GitHub, собрать его с помощью Gradle, запустить с помощью инструкций ENTRYPOINT и CMD, подключившись к предварительно запущенному контейнеру PostgreSQL базы данных, и открыть на локальной машине в браузере стартовую страницу приложения. Также в заключении поговорим о том, как мы могли бы улучшить уже написанный Dockerfile. Особенно важно - это то, что каждый проделанный шаг будет включать объяснение и использование best practices, которые мы уже знаем из предыдущих видео курса Docker.
39. Docker Compose После предыдущего практического занятия мы увидели, как много различных команд нужно знать и выполнить для того, чтобы поддерживать работу между двумя взаимосвязанными контейнерами. А теперь давайте представим, что таких контейнеров будет 5 или 10! Сложность работы с ними возрастает даже не по линейной зависимости. Именно поэтому к нам на помощь приходит утилита Docker Compose, которая поможет упростить работу с контейнерами, заменив императивный подхода команды docker на декларативный - команды docker compose.
40. Docker Compose. Services. Part 1 41. Docker Compose. Services. Part 2 42. Docker Compose. Networks 43. Docker Compose. Volumes 44. Docker Compose. Secrets 45. Заключение. Путь развития 29.04.2024 - исправлены проблемы со звуком, добавлены уроки 38 и 39 Скриншоты:
Время раздачи: с 09.00 до 21.00 [GMT+2] (до появления первых 3-5 скачавших) |
|
|
|
|
charli-chaplin
Стаж: 12 лет 8 мес.
Сообщений: 99
Ratio: 2.457
100%
|
|
|
alexdao
Стаж: 8 лет 2 мес.
Сообщений: 39
Ratio: 20.195
0%
Откуда: Ванавара
|
В файле Docker.35. Push docker image.mp4 половина звука отсутствует. |
|
|
|
nnmtrn
Стаж: 13 лет 9 мес.
Сообщений: 6
Ratio: 46.737
100%
|
Подтверждаю, во многих файлах отсутствует звук. |
|
|
|
Irbis_
Стаж: 3 года 9 мес.
Сообщений: 75
Ratio: 7.332
3.19%
|
Скажу так, я не нашел ни одно не битого файла, в разных частях фалов есть проблемы со звуком
Если у автора раздачи есть возможность пофиксить и перезалить это было бы лучшее решение этой проблемы |
|
|
|
baleiro
Стаж: 15 лет 6 мес.
Сообщений: 9
Ratio: 2.423
Поблагодарили: 8
3.04%
|
|
|
gravitonikus
Стаж: 9 лет
Сообщений: 2
Ratio: 1.941
0%
|
Доброго всем дня!
Вопрос к раздающему (создателю топика), есть ли возможность выложить все 45 видео блоков с нормальным звуком (именно 45, а не 37), как я понял во многих видео блоках звуковая дорожка чиста с половины файла, т.е. звука вообще нет, судя по программе видеомонтажа.
Заранее спасибо. Всех Благ! |
|
|
|
Nord Freeman ®
RG Книги
Куратор Книг
Стаж: 12 лет 7 мес.
Сообщений: 6459
Ratio: 6943.98
Раздал: 133.8 TB
Поблагодарили: 620070
100%
Откуда: The Pirate Bay
|
29.04.2024 - исправлены проблемы со звуком, добавлены уроки 38 и 39 |
|
|
|
aot2003
Стаж: 9 лет
Сообщений: 28
Ratio: 3.961
66.58%
|
Nord Freeman писал(а): | 29.04.2024 - исправлены проблемы со звуком, добавлены уроки 38 и 39 |
Урок №9, с 06:13 и до конца. Нет звука... |
|
|
|
nickname2017
Стаж: 7 лет 11 мес.
Сообщений: 6
Ratio: 5.496
0.03%
|
aot2003 писал(а): | Nord Freeman писал(а): | 29.04.2024 - исправлены проблемы со звуком, добавлены уроки 38 и 39 |
Урок №9, с 06:13 и до конца. Нет звука... |
Вроде есть звук |
|
|
|
dauster
Стаж: 1 год 11 мес.
Сообщений: 37
Ratio: 17.609
0%
|
Проверил на 9 уроке - также звука нет после 6:13. |
|
|
|
zapzapravka
Стаж: 13 лет
Сообщений: 129
Ratio: 14.201
100%
|
Кто-то может подсказать, сейчас исправлены все ошибки со звуком или нет еще? |
|
|
|
ganduraso
Стаж: 9 лет 2 мес.
Сообщений: 81
Ratio: 2.361
1.26%
|
zapzapravka писал(а): | Кто-то может подсказать, сейчас исправлены все ошибки со звуком или нет еще? |
Звук есть во всех видео, кроме как писали тут "Урок №9, с 06:13 и до конца. Нет звука..." это да на момент 15.05.2024 звука нет, все остольные видео со звуком, в целом в 9 видео звука нет под конец, можно сказать не критично для курса. А вообще вот видео на ютубе можно взять подписку и поддержать автора: https://www.youtube.com/playlist?list=PLnh8EajVFTl7oqQGrnobnlKghaUQ6IOva |
|
|
|
gravitonikus
Стаж: 9 лет
Сообщений: 2
Ratio: 1.941
0%
|
Мастера, мастера!!!! Выложите остальное!!!! |
|
|
|
androsor
Стаж: 2 года 2 мес.
Сообщений: 1
Ratio: 1.15
2.94%
|
Уважаемый! Запили, пожалуйста, оставшиеся уроки! |
|
|
|
|
|
|