Чем является Docker и чем не является. Что из себя представляют образы и контейнеры. Чем контейнер отличается от виртуальной машины. В чём удобство использования Docker для продакшена и для локальной разработки.
- 00:01:44 Классический запуск процессов
- 00:02:09 Запуск через sudo и su
- 00:03:06 Запускальщик с разными настройками
- 00:04:44 Пространства имён
- 00:05:41 Виртуальные сети
- 00:07:34 Запуск из отдельной папки
- 00:08:39 Образ файловой системы
- 00:11:09 Обязательный параметр
- 00:13:13 Запуск демона в фоне
- 00:14:32 Просмотр процессов
- 00:15:14 Имя для процесса
- 00:15:47 Очистка мусора
- 00:18:14 Иммутабельность образов
- 00:20:01 Многослойная файловая система
- 00:21:29 Монтирование внешних папок
- 00:23:17 Сборка образов
- 00:24:21 Обзор результата
- 00:26:33 Использование Docker
- 00:28:43 Запуск сервера в Docker
- 00:31:04 Запуск сервера Nginx с PHP-FPM
- 00:32:17 Запуск системы через Docker Compose
- 00:33:39 Монтирование рабочих файлов
- 00:36:18 Отличие от виртуальной машины
Скрытый контент (код, слайды, ...) для подписчиков.
Открыть →Чтобы не пропускать новые эпизоды подпишитесь на наш канал @deworkerpro в Telegram
Сколько приблизительно будет частей? И какая частота выхода новых видео?
Примерно два-три видео в неделю. Если длинные, то реже. Количество частей зависит от степени дробления и от того, какие у кого возникнут вопросы и что захочется рассмотреть подробнее.
Может кто использует Docker на windows. Сталкивались с ошибкой - ERROR: Service 'nginx' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder952139899/docker\nginx\conf.d: no such file or directory ?
https://stackoverflow.com/questions/45972812/are-you-trying-to-mount-a-directory-onto-a-file-or-vice-versa
Але краще використовувати Docker Toolbox, закидати проект потрібно обов'язково на диск С в каталог користувача, проблем з цим підходом в рази менше)))
Денис, это никак не связано с windows - там у Вас где-то в путях/контексте ошибка, не может скопироваться файл, т.к. докер его не может найти. У меня такое было несколько раз, я неверно указывал путь. А так Docker сейчас на windows работает нормально, хотя и не так быстро, как хотелось бы.
надо расшарить папку http://joxi.ru/EA4gDK5HOXe0B2
Решил проблему с путями в Windows 10, если кому интересно. Во-первых docker-compose.yml У nginx там context - ./site/docker/nginx А значит в dockerfile будет
COPY ./conf.d ./etc/nginx/conf.d
вместо
COPY ./docker/nginx/conf.d ./etc/nginx/conf.d
и COPY ./././public ./public
вместо
COPY ./public ./public
Для меня не явным было, что для шага назад - используется конструкция с одной точкой, а не двумя.
Для development окружения строка COPY ./public не нужна. Только в production.
А как так не нужна в dev? Скопировать настройку nginx же необходимо.
Да, COPY conf.d нужна, а COPY public нет.
А все, это я не заметил, что именно для public идет обсуждение, пардон
Windows 10 потом будут проблемы с ярлыками \node_modules.bin, вывод
npm instal
работать не будетПроблема решена докер игнором, хотел Дмитрия спросить, есть ли такое как git игнор, ответ узнал в новых уроках. избегайте любых ссылок линуксоидных они не работают. докер игнором, супер!!!! Нет хлама на компе бесило 20к файлов это минимум.
Дмитрий, спасибо за урок! Очень доходчиво объясняете) Расскажите подробней про создание разных окружений (dev, stage, prod). Еще хотелось бы узнать, как работать с docker swarm (например, ссылаться из front контейнера по ссылке http ://backend и наоборот, запуск нескольких экземпляров приложения и т.д.).
Да, это всё будет.
Класс! :)
Раньше приходилось ускорять видео, а теперь хочется немного замедлить))) Можно чуть - чуть помедленнее, я пытаюсь успеть запомнить)) А так, видосы крутые.
Кстати, да. Тоже заметил, что раньше ускорял видео, а сейчас смотрю на нормальной скорости. И видео более емкие стали чтоли, совсем без воды.
Несколько раз зачищаю видео, чтобы убрать все повторы. После этого перед публикацией Дмитрий пересматривает и удаляет оставшееся. Поэтому, возможно, информация кажется более концентрированной.
Отличная работа!
Юлия, спасибо Вам за работу.
Юлия, спасибо за весомый вклад в проект!
А когда будут следующие серии? )
Скорее всего на выходных опубликуем.
Очень оригинальное введение в докер.
Но по поводу запуска Докер под виндой, это не совсем так. Запуск в Убунте, это всёравно, что на виртуалке (так не запускал потому что не вижу в этом удобства). Официальная версия запуска это через Докер Дескоп и все будет запускаться из командной строки. Только появляется проблема запуска ВиртуалБокс, потому что такая установка потребует активации Hyper-V , я знаю способ лечения только через двойную загрузку винды (с Hyper-V и без).
Я это к тому, что если кто-то знает другой способ использования Hyper-V и ВиртуалБокса на одной виндовой машине расскажите как вы это делаете? Наверняка многие здесь будут повторять материал у себя и столкнутся с этой проблемой.
Win10 Pro: VirtualBox -> Vagrant -> puphpet (собираем голый Ubuntu 16) -> putty (через SSH) -> Docker-compose и др. в Ubuntu (получается виртуалка в виртуалке, медленно (сайт около 3с.) но работает)
Блин, но очень медленно(
Если VirtualBox вам не нужен, то можете прям в винде установить Докер: https://docs.docker.com/docker-for-windows/install/
Зависит от версии винды
Если вы о Хомечках, то это обходится. Но из моих иследований, лучше виртуалбокс. Docker Desktop - в итоге начал разваливаться. Docker на Hyper-V предпочитмает виндоус контейнеры. Сейчас буду пытаться перейти на Docker + ВиртуалБокс
я с Docker Quickstart Terminal перехожу Docker Desktop (wsl 2) самое сложное будет настроить Ip он меняется
я плюнул на эту борьбу после того как на тестировании не получил ни одной ошибки, и ответ , что ноль тестов прошло успешно. Мое мнение либо сразу курс нужно проходить на Линукс машине, либо , знаю один из наших коллег, прошёл дальше меня через виртуал бокс. WSL2 - работает на HyperV , вы можете получить имиджи которые будут неадекватно вести себя на линуксе.
Отсутствует регулировка уровня звука в плеере.
Если у кого-то ошибка при запуске docker-compose up -d типа такой ... ERROR: Service 'nginx' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder465650860/docker/development/nginx/conf.d: no such file or directory ... Нужно проверить содержимое файла Dockerfile docker/site/docker/development/nginx/Dockerfile Например такой файл отрабатывает корректно
Либо она должна там быть во время сборки, либо должна быть примонтирована через volumes.
Дмитрий, спасибо, разобрался и исправил своё сообщение. У меня была ошибка в файле docker/site/docker/development/nginx/Dockerfile
Это не объяснение, что такое Docker, это рассказ "Вот, что я умею делать на компьютере".
Объяснение какой либо сущности или явления, это нечто совсем иное.
Человек незнакомый с Docker совершенно ничего не поймет из этого видео, просто ничего.
Здесь показано, что:
Sudo - это простой запускальщик программ от имени другого пользователя.
Docker - это более продвинутый запускальщик программ в отдельной файловой системе, памяти и сети.
Это, собственно, всё, что он из себя представляет. Docker - это просто как продвинутый sudo.
Какие ещё вопросы по его пониманию могут быть?
Вы это назвали пониманием?
У меня просто нет слов ...
Именно. Если человек понимает, что такое sudo в консоли, то по аналогии сразу поймёт, что docker работает в консоли как sudo с дополнительными опциями.
Если же не понимает, что такое консоль и как настраивается сервер, то разрабатывать на фреймворках ему пока рано.
Если человек понимает, что такое sudo, то он просто обязан не согласиться с вашим грубейшим обобщением/абстрагированием, которое вы применили к sudo и к Docker, а также с тем, как вы их сравнили.
Ни про sudo, ни про Docker вы не правы, боюсь, что в корне.
Конечно нельзя запретить относиться ко всему как к "черному ящику" и иметь магическое мышление, но, думаю, что к совести, я могу призвать.
Вы хоть от монетизации своих рассказов откажитесь.
На YouTube у вас и аудитория могла бы быть больше и обратная связь мощнее, что влияло бы на совокупное качество материала, а монету могли бы от рекламы получать, не возбраняется в наше время, а в целом, более честно.
А так какую-то кибер-секту тут устроили, простите за оценочное суждение.
Ну расскажите объективно и конструктивно, в чём мы не правы.
Прямая открытая монетизация честнее, чем скрытая через рекламу.
Нет смысла в пересказывании мной справочных данных.
Все можно найти на просторах интернета, я лишь песчинка в складках бытия.
Sudo, это не "простой запускальщик программ от имени другого пользователя".
Это не "запускальщик", а целая подсистема предоставления прав суперпользователя (другого пользователя, как в частном случае).
Основная функция не запустить, а предоставить права и не такая уж она и простая, т.к. речь о безопасности.
Docker, тоже, ни разу не "запускальщик", а целая система контейнеризации.
Понимать надо начиная с технологии Linux Containers и различать виртуальные машины и виртуальные окружения.
Будьте более уважительны к смыслам, к понятиям и терминам.
Из альтруистических соображений рекомендую вам изучить, что такое содержание и объем понятий, очень полезное знание.
Обратитесь к:
Введение в логику - Сергей Поварнин
"Логика" учебник для средней школы, С.Н.Виноградов, А.Ф.Кузьмин, УЧПЕДГИЗ 1954
Георг Вильгельм Фридрих Гегель - Наука логики
В итоге ничего из вами перечисленного не противоречит тому, что sudo запускает указанную программу или шелл, подменяя пользователя; а docker используя линуксовые инструменты контейнеризации создаёт изолированный контейнер для запуска процессов в нём.
А по терминам и смыслам ваше определение "докер – это целая система контейнеризации" не совсем корректно, так как:
То есть сам Docker – это не система контейнеризации, а инструмент для удобного управления этой контейнеризацией. Всего лишь утилита, работающая поверх нативной системы контейнеризации. Как Vagrant всего лишь является консольной утилитой поверх систем виртуализации для автоматизации управления машинами в том же VirtualBox.
Да что вы такое говорите, неужели не противоречит и когда это мы итоги подводили?
Вы уже ознакомились с основными положениями логики, с логическими приемами, изучили что такое понятие, его содержание и объем, другие положения?
По вашему получается, что я утверждал что-то подобное, как
На данный момент, в рамках узкой темы, я выступаю как ваш оппонент, а не как единомышленник и в принципе не могу ничего такого утверждать.
Вы не понимаете того, что я противопоставляю точные формулировки вашим грубым обобщениям и абстракциям.
Вынужден в очередной раз это сделать и отойти от сути дискуссии:
Не стоит утверждать, что sudo что-то запускает и тем более - shell.
Чуть меньше, чем все в системе запускает сама shell и пользователь.
Чуть меньше, чем все потому, что shell сама является процессом-потомком.
Внутри shell, как процесса, запускаются другие процессы, иногда это делает пользователь, используя sudo или su для этого или не используя.
Sudo, скорее, это обертка процесса, чем среда выполнения сама по себе или интерпретатор команд.
Средой и интерпретатором команд является shell.
Как в деталях работает sudo (что оно подменяет), это другой разговор, мы не об этом.
Не надо плодить сущности, держитесь в рамках своих тезисов и моих антитезисов - наша дискуссия перешла к выяснению того, что чем является и чем не является.
Итак, я отрицаю следующие ваши утверждения:
Вы ошибочно классифицировали сущности, и, как следствие, провели ложное их сравнение, потому, что:
1. объединили в одно проявление sudo и Docker, когда они слабо связаны друг с другом признаками
2. выбрали ошибочную основу для сравнения - внешние проявления
3. взяли для сравнения признаки, находящиеся в разных отношениях
4. взяли первые попавшиеся признаки
Поясняю: понятия, не соответствующие объекту или явлению, ложны:
и
эти проявления действительности только внешне выглядят похожими.
Sudo и Docker имеют мало общего, для того, чтобы второй из них содержал в себе все свойства первого, включал в себя дополнительные, оставался собой, был тождественен первому и при всем этом качественно превосходил его.
Sudo и Docker нетождественные сущности
Нельзя проводить какие либо обобщения и абстрагирования до того, как станут известны все свойства объекта/явления, существенные и несущественные
Кроме всего этого, не помешало бы уточнить про разницу между sudo и su.
Еще одно ложное утверждение, полностью или частично, хотя оно не относится прямо к дискуссии, но зато хорошо показывает, как вы нарушаете логику:
Частично потому, что не только работа с фреймворками требует навыков системного администрирования, а даже запуск статического сайта из локального каталога, с парой файлов, этого требует.
Т.е. это не относится только к фреймворкам.
Полностью потому, что человек может запросить настройку у кого либо, например, у друга и заниматься разработкой хоть на фреймворках, хоть без них.
Но мы сильно отклонились от главного моего возражения.
Главное то, что вы не то рассказывали про Docker, что следовало бы и как следовало бы.
Docker, это выполнение процесса(ов) в контейнере, который содержит только те файлы, которые нужны для выполнения этого процесса(ов), вместо создания экземпляра полной операционной системы с ее ядром.
Например, для Apache или Nginx не нужны все файлы полной ОС, а достаточно только тех, от которых напрямую зависит их работа, все остальное можно взять от системы, которая содержит этот контейнер.
Это был ответ на вопрос "что это".
Так как, противопоставлены виртуализация и контейнеризация, а мышление человека основано на ассоциациях, то этого уже достаточно для получения общего представления о том, что такое Docker.
То, что контейнеры создаются на основе образов и прочие принципы его работы, это уже относится к ответу на вопрос "как это".
Так же, другой разговор, как конкретно пользоваться Docker, т.е. практика.
Совершенно верно. В этом и суть видео.
В нём мы сначала рассмотрели sudo, который умеет только подменять пользователя. А потом сделали свой более продвинутый runner, который сначала был внешне похож на sudo, но потом оброс инструментами контейнеризации и в итоге стал docker-ом.
И в этом и смысл тезиса, что docker внешне выглядит как sudo, но работает более продвинуто. То есть в этом плане docker - это как продвинутый sudo. В этом противоречий нет и логика соблюдена.
Это вы сами придумали, что я сказал, что они тождественны. И сами теперь на это обижаетесь и старательно пытаетесь доказать, что это всё там где-то внутри не так.
Об этом как раз и рассказано в видео и повторено в заключении.
Так что по основным положениям и приёмам логики делаю вывод, что видео вы не посмотрели. Либо посмотрели, но не поняли. Так что в дальнейшем споре только ради спора не вижу смысла.
Чушь собачья ...
Ну ты и зануда, Иван
А по существу?
по существу Дмитрий показывает на практике данный софт и делает акцент на его практическом применении в первую очередь, а-ля getting started для новичков, которые его не использовали ранее. С этой точки зрения данный подход обоснован. И новичкам не до этого сейчас, как же там объективно устроен Docker, им нужно сейчас научиться применить его и идти дальше в данном мастер-классе. Следовательно, каких-то упрощенных абстракции, которые использованы здесь, вполне хватит для понимания/применения технологии. А дальше уже самостоятельно изучить технологию не составит труда, если кто-то пойдет в откровенную автоматизацию и работу с докер.
смысл вести такой холивар, придираясь к каждому слову? Здесь не мастер-класс по девопс, а в первую очередь материал для php-программистов.
Все таки показывает на практике?
Хорошо.
Значит я был прав, утверждая то, что содержимое видео не соответствует названию - в видео показывается а'ля "смотрите как я умею", а про то, "Что такое Docker", там говорится на уровне языка средневековой магии.
Новичков таким только калечить, буду рад за каждого из них, кто пройдет мимо этого видео.
Если новичкам не до того, как объективно устроен Docker, то это означает то, что им "не до", а не то, что им надо объяснть субъективно.
Вот еще один пример ваших нарушений логики, они на каждом шагу, вы не понимаете того, что вы говорите и о чем говорите.
С этим я и борюсь.
Новичкам это видео ничего не даст, они ничего не смогут запустить после его просмотра, ну у единиц может и получится, у тех, кто все озвученное мракобесие сможет скорректировать в своих головах.
Какие-то оговорки, ошибки, шероховатости есть у всех и это понятно, но то, что в в этом видео, это за пределами добра и зла.
Холивар, это у вас такой ярлычек, для обесценивания замечаний в ваш адрес, просто устроились так удобно, только и всего.
Нет конечно :). В данном видео просто опущены теоретические подробности Docker — libcontainer — оригинальные механизмы и функции контейнерезации Линукс. (Как то: контрольные группы и пространства имён). Вместо них, не нарушая общего представления о технологии, показана точно такая же аналогия! Вот и все.
Здесь точно секта, техническая, но секта.
Собрались механисты по интересам и делятся обломками своих представлений об окружающем мире.
Аргументы закончились. Удачи в лечении.
Аргументы на вас не действуют, как и на любых других сектантов, вы вне законов мышления и логики.
А на тебя не действует здравый смысл и объективная реальность вкупе с логикой, за которую ты так топишь. Обосрался публично? Обтекай реалистично.
Здравый смысл, это всего лишь фигура речи и у любого мракобеса имеет свое значение.
Объективную реальность еще следует выделить из субъективного восприятия, на что вы не способны в силу текущего развития.
А уж про логику не вам и упоминать, это объективная наука, а не те зависимости между словами, которые вам мерещаться.
Вас я имею в виду, поколение, а не тебя.
Вы дискутируете, как тот голубь играет в шахматы, разбрасываете фигуры, срете на доску и улетаете в свою стайку, хвастаться тем, как лихо вы выиграли.
Этот словоблуд, выражающийся в твоих комментариях, предварительно появившийся из того бреда (или галлюцинации) в голове, абсолютно не имеет никакого отношения к логике и аргументам, говорящим в твою пользу, а скорее раскрывает истинную клиническую картину болезни человека. Человека который верит в свой бред и пытается убедить других, несмотря на факты. Факты которыми ты умылся, но так как ты болен, то продолжаешь нести чушь - причём полнейшую. А во вторых просто ты не досмотрел видео или не понял - но это и понятно, в связи с кардинальными нарушениями нейронных связей в голове. Точнее, даже, скорее всего, с их отсутствием!
Зарылся в определениях заумных (а скорее всего заучил). В которых не понимаешь ничего и кидаешься фразами.
А, в заумных определениях!?
Ну вот, вот и подтверждение вашей недалекости.
Чуть дальше вашего ума, и все, сушите весла.
Видео я смотрел полностью и посмотрю еще раз, по всей видимости.
Возможно сделаю видеообзор, с объяснением всей кривизны, про которую хотел сообщить здесь собравшимся.
Слова понятны не всем одинаково, т.к. уровень умственного развития разный, да еще и экспериментальное образование делает свое грязное дело.
Делай обзор, ловлю на слове. И не забудь ссылку скинуть, я уже заказал партию попкорна!
Добро.
Ну так идите дальше, мимо секты))
Позднее у тебя зажигание, однако! )
Не могу оставаться равнодушным, есть шанс спасти разум какого нибудь заблудшего малолетнего эльфа.
Хотя, сейчас малость не до этого.
Забыл про монетизацию.
Нет, не честнее.
Когда через рекламу, платит какой-то "дядя в вакууме" у которого денег, как у дурака фантиков, а когда напрямую - простой человек из своих кровно заработанных.
Не честно потому, что вы не преподаватель, не педагог, не профессор и так далее, вас не обучали обучать, а этому надо обучаться.
Только что-то знать, уметь, обладать компетентностью - недостаточно.
Нет каких-то отдельных "дядь" и отдельных "простых людей". Все зарабатывают и платят одни и те же деньги. Но это не тема для обсуждения на ресурсе о программировании.
Честно. Преподаватель.
Вы снова подменили тезис - речь не про наличие или отсутствие дядей, а про то, что честнее, а что нет.
Еще раз скажу, что зарабатывание на рекламе в Ютубе уже никого не удивляет и не обижает, никто уже давно не считает это обманом.
За все и всех платит рекламодатель, у которого денег, как у дурака фантиков, а не обычный человек, которому цена - одна зарплата.
По какому критерию вы зачислили себя в преподаватели?
Считает или нет, обижает или нет, нравится или нет - это лишь объективное оценочное суждение. К реальности и логике это никак не относится.
Прямые отношения намного честнее, чем серые и посреднические схемы с торговлей персональными данными, слежением и скрытым показом рекламы.
Рекламодатель продавая продукт собирает чьи-то кровные деньги, ими оплачивает аренду и рекламу и половину остатка отдаёт вам. То есть его и ваша зарплаты целиком состоят из одних и тех же изначально чьих-то кровных денег. И помимо этого он оплачивает сверху вашу пенсию и страховку. Поэтому не притворяйтесь честным обычным человеком. Вы с ним оба соучастники сбора и дележа между собой чужих денег. Разница между вами с ним только в том, кто из вас эти деньги собирает с клиентов.
Если хотите "честности", чтобы у остальных "простых" людей не отбирали кровные чтобы ими оплачивать вам зарплату, то работайте бесплатно.
По критерию наличия соответствующего диплома.
Диплом покажите.
Отправьте почтой России официальный письменный запрос с распиской о нераспространении персональных данных на юридический адрес компании и я ответным письмом вышлю вам ксерокопию.
Лицо попроще сделай и займись изучением логики.
Есть, товарищ подполковник. Займусь :)
аргументированный аргумент
Это на ютубе мощная обратная связь? Лолчто? В русском ютубе одна половина хейторов, которым все всё должны, а другая школьники с кремлеботами. Нашли блин где обратную связь получать. Ору :)
Не знаю куда ещё проще! Прям разжевали и в рот положили. Если что то непонятно, попытайтесь покопаться в других источниках, более вам доступных
Иван, ты дегенерат, который ничего не добился в жизни. Иди компенсируй свой недоеб в другом месте. Дмитрий отличный преподаватель, а ты иди на***.
"Вы смеётесь надо мной, потому что я отличаюсь от вас, а я смеюсь над вами, потому что вы не отличаетесь друг от друга!"
(с)
Вас делает одинаковыми и похожими то, что вы жертвы современной системы образования и рынка.
Первая вас научила "ходить", а вторая определила минимальный уровень вашего развития в своих интересах.
Ваше мышление еще без фундамента, не подчинено разуму, для вас еще недоступны сложные размышления и смыслы.
Прекрасный диалог! :) Получил эстетическое удовольствие.
Добрый день! Вопрос.
Docker выдаёт ошибку при сборке nginx
вернее не ошибку. а в логах отображается это, а контейнер отображает статус Exited (1)
Попытайтесь в этом контексте думать о sudo, ведь оно мало, чем отличается от Docker и проблема моментально разрешится.
можете пояснить? Docker использую без sudo.
Не могу, с этим не ко мне, а к автору, это он утверждает, что sudo и Docker одно и тоже.
да вот пока не могу нигде найти решение, контейнер собирается но пишет статус Exited (1).
Могу попытаться помочь, если очень надо, мой id в контаче 95536713
отправил запрос в vk
Иван большое спасибо за помощь!!!
Был рад тому, что смог помочь. )
Если решили проблему, почему нельзя выложить решение сюда? Тоже столкнулся с этим, не понимаю как решить
Тестовый комментарий
Что бы сайт был доступен по айпи 127.0.0.1, а не случайный
Проброс портов VirtualBox
Для эстрогеновых эльфа-самцов.
Вот про то, что такое Docker, не придраться: https://youtu.be/KS80Knz-1Z4
Да уж:
Виртуалки слишком тяжеловесные... Приложение - это кусок кода с зависимостями... Можно ли добиться изоляции, которую даёт виртуализация, но без виртуализации? Оказывается можно... Смысл работы Докера в том, что вместо того, чтобы запускать приложение веб-сервер Nginx напрямую на операционной системе, Докер запускает процесс Докера, внутри которого как в Матрице выполняется этот веб-сервер Nginx. Снаружи каждый Докер-процесс выглядит просто как процесс. А внутри каждое запущенное приложение думает, что оно уникальное.
Очень понятно, научно и логично :)
А где антитезис-то?
Папа, что такое Docker?
Сынок, Docker - это Матрица, которая в своём процессе запускает процесс как процесс.
О_О
Никакой процесс в процессе буквально не запускается. Докер запускает процесс Nginx. Почему процесс видит себя уникальным - не показано. Что это за куски кода и коробочки-матрицы - не названо. Эта Матрица (Докер-процесс), которую имеет в виду автор, называется контейнером.
Фраза не имеет смысла, так как сравнивает утилиту и виртуализацию. Сам Докер не осуществляет контейнеризацию. Раз это делается системными возможностями, то чем именно занимается сам Docker и как это реализовывается - не сказано.
Фраза не несёт точного смысла, так как Докерфайлом описывается образ, а не контейнер.
Раз вы к этому не придираетесь, то к вам у меня вопросов больше нет.
В общем, это только лёгкий рассказ под музыку и фантастическим видео, что Докер круче виртуалок. Но не показано ни одной технической детали, как это устроено и что как происходит. Ни одного понятия что такое образ, демон и т.п. не приведено. Как работают контейнеры и образы не сказано.
Видеоролик эффектный, но в практическом плане бесполезный.
Вместо портянки компактная ссылка на нее.
Понятно. У него это "просто неточность или оговорка", а у меня "мракобесная дичь с подменой понятий". Просто блещете объективностью.
А от того, что в Docker спрограммировали свой драйвер libcontainer вместо LXC суть остального софта не поменялась.
Да, у него неточности, которые возможно скорректировать из общего контекста, а у тебя заблуждения, подмена и замена понятий, от чего ты никак не можешь отказаться.
Какая суть, какого софта, что из своих утверждений ты пытаешься спасти?
Ту реальную суть, которая вам не нравится. Что Docker - это набор софта, использующего встроенные возможности контейнеризации линуксового ядра, а не самостоятельная система, которой вы его считаете.
Раньше он был обёрткой над LXC. Теперь он использует cgrops и namespaces через библиотеку libcontainer. Так что эволюцией LXC является только libcontainer, а не весь Docker. Суть остальной системы не поменялась: вместо обёртки над LXC она так и осталась такой же обёрткой, но над libcontainer.
Для неэстрогеновых бета-самцов есть доклад, где с восьмой минуты по восемнадцатую показано, что и как он примерно делает внутри.
Ты пытаешься спасти нереальную суть. )
И не переобувайся, ты хочешь спасти наиложнейшую свою аналогию Docker и sudo.
А то, что Docker, это набор софта, это твое позднее достижение, а я, в общем-то это и не отрицал и подтверждает это то, что я приводил названия утилит входящих в его состав.
С "набором" почти порядок, соглашусь, что граница понятия автономности Docker размыта, в чем-то подросло ядро, в чем-то сам Docker, но не я считаю, что Docker сейчас больше полноценное приложение, чем раньше, когда был оберткой LXC:
>> Early versions of Docker were little more than a wrapper around LXC paired with a union filesystem, but the uptake and speed of development was shockingly fast.
(c) p.9, Docker: A History, Chapter 1: The What and Why of Containers, "Using Docker" by Adrian Mouat.
Вот ты тот доклад и используй в след. раз для своих рассказов, лучше будет.
Спасать её и не надо, так как всё с ней нормально, как уже обсудили выше. Можно сказать вашими же словами про матрицу с процессом в процессе:
Вот и вся практическая разница. Вы сами придумали, что это не так - сами обиделись. Теперь вместо этого упираете на свою логику, но кидаете нам видео с перлами "докер легче виртуализации" и "докер - это контейнер". Заодно отвергаете выше тезис "докер - это продвинутый запускальщик программ", но соглашаетесь и цитируете про "запуск как в матрице процесса в процессе". Выглядит весьма забавно. С чем именно мне спорить?
Ну и о чём здесь речь? Раньше он был небольшой обёрткой на LXC, а теперь после долгих стараний стал чуть большей обёрткой над libcontainer, обзаведясь дополнительными надстройками. Завёл Hub и научился запускать контейнеры в Swarm Mode. Об этом я и говорю. Что вы этой цитатой хотели сказать?
Так что сначала выработайте свой точный понятийный аппарат со своей терминологией, что чем является и что чем не является. А потом уже влезайте в дискуссию. А иначе в текущем виде сами себе через комментарий противоречите.
С тобой бесмысленно дискутировать по правилам, ты их просто не знаешь, через твой троллинг не пробраться и сборной из филологов, лингвистов и логиков.
Какой источник бы не взять, любой будет против тебя, например:
https://vps.ua/blog/docker-and-linux-containers/
https://habr.com/ru/company/FastVPS/blog/209072/
ничего не подкрепляет твои утверждения.
Попрежнему получается, что Docker это самостоятельная система контейнеризации и никакой оберткой чего либо в Linux он не является.
Еще раз, отдельно: то, что Linux предоставляет поддержку контейнеризации с помощью к.л. lib и прочего, не делает Docker оберткой.
LXC, это другая система контейнеризации, которой полноценно противопоставляется Docker и они вовсю сравниваются, что делает их отдельными, разными, самостоятельными сущностями.
Пардон, но процитирую, что ваш второй источник говорит:
Думаю, что это подкрепляет мои утверждения про утилиты и обёртки.
Так что спасибо за источник.
Ещё раз, отдельно, как сказано в вашем источнике выше: и Docker, и LXC, и остальные системы являются набором утилит-обёрток над инструментами контейнеризации namespaces и cgroups ядра Linux.
Живите теперь с этим.
Ты упертый дурак.
Источники говорят о самостоятельности LXC и Docker - Docker не обертка.
Не думаешь ты, а выдумываешь и ошибаешься, ты не понимаешь что такое думать, это от тебя ускользнуло как-то.
>> и остальные системы являются набором утилит-обёрток над инструментами контейнеризации namespaces и cgroups ядра Linux
Нет, не сказано, особенно не сказано "являются набором утилит-обёрток".
В вашем втором источнике именно так и сказано:
То есть что LXC - это набор утилит-обёрток над подсистемами ядра Linux.
Если бы LXC и Docker были самостоятельными, то могли бы обеспечивать контейнеризацию сами без необходимости использовать инструменты ядра. Но вместо этого они так и остаются обёртками над инструментами контейнеризации ядра.
Официальный источник про версию 0.9 говорит:
То есть Docker позволяет работать со всеми этими инструментами через соответствующий драйвер. Как вы сказали, вначале Docker был обёрткой над LXC. Из цитаты видно, что с версии 0.9 он помимо LXC может также оборачивать что угодно из вышеперечисленного.
То есть Docker всего лишь к вышеперечисленным драйверам дописал свою отдельную библиотеку libcontainer на Go (которая является тонкой обёрткой над kernel’s container APIs), чтобы к этим подсистемам ядра обращаться через неё вместо использования LXC и других.
Ты как хочешь можешь выкручивать смыслы в защиту своего сельского мышления, это твое дело.
Ты не осиливаешь главного, противопставлений.
Чем бы не был LXC, но это делает Docker самостоятельной системой, а не оберткой.
Ты тот, кто понимает значение отдельных слов, но не в силах понимать смысл предложений, это похоже на заболевание.
Возможно, что у тебя что вроде афазии Брока.
Логика, это не твое и не для тебя.
Кривляйся дальше, паяц.
Странные дела получаются: У нас Dockerfile для nginx лежит в папке /site/docker/nginx/conf.d
Но внутри этого Dockerfile мы используем
COPY ./docker/nginx/conf.d /etc/nginx/conf.d
а не
COPY ./conf.d /etc/nginx/conf.d
Я думал, что ./ это относительно того, где этот докефайл и лежит. Кстати phpstorm также и считает. Но писать пути надо как будто этот докерфайл лежит в корне проекта, а не далеко в подпапке
Это пути относительно context.
Да, спасибо :)
На 35-й минуты попробовал сбилдить
D:\domains\apache-server>docker-compose up -d Building nginx Step 1/4 : FROM nginx:1.17-alpine ---> 29b49a39bc47 Step 2/4 : COPY ./conf.d /etc/nginx/conf.d ---> da020a9d9c7b Step 3/4 : WORKDIR /app ---> Running in 52801d2f954f Removing intermediate container 52801d2f954f ---> bd0adee81c05 Step 4/4 : COPY ./public ./public ERROR: Service 'nginx' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder534557375/public: no such file or directory
почему то COPY ./public ./public не прошло. Есть идеи? На видео именно COPY ./public ./public копируетсяСудя по всему из-за вольюма ошибка летела
Копирование исходников в образ через
COPY ./public ./public
должно быть только в priduction образах. В development код примонтируется через volume и там эта командаCOPY
не нужна.Подскажите, как заставить php-fpm отрабатывать файлы?
При конфигурации
Вот это дело уходит в бесконечную загрузку:
А с
Индексный файл отдает на скачивание. Чушь полнейшая
Возможно из за
fastcgi_split_path_info
. В любом случае посмотрите логи по командеА Вы не показали, как выглядит Dockerfile в nginx?
Файл
development/nginx/Dockerfile
:Файл
production/nginx/Dockerfile
:Добрый день, а никто не использовал связку win10 + vagrant? Поднял виртуалку при помощи vagrant, установил docker и docker-composer, контейнер с nginx запускается, но получаю 403 ошибку от ngnix.... и как ни гуглил, не нашел решения....
Было бы круто, если бы про Docker сделали отдельный цикл
А что именно там нужно рассмотреть отдельно?
в целом, как работать с ним
В целом мы в этом проекте много чего с ним рассмотрели и ещё рассмотрим.
Подскажите пожалуйста после запуска docker-compose и обращении к странице выдает ошибку
вам же пишется ошибка, вебсервер не видит вашего файла. покажите конфиг nginx
Я согласен, что объяснение немного "creepy", но все же автор старается Тем более тут очень много материала для так сказать расширения кругозора
Подскажите пожалуйста после запуска docker-compose и обращении к странице выдает ошибку:
а у вас есть файл ./frontend/public/index.html относительно места в файловой структуре где вы запускаете команду docker-compose up -d ?
https://prnt.sc/tl08c6
Не монтируются папки volumes: - ./frontend:/app. У меня docker работает на win 7pro не подскажите где настройку подправить?
в VirtualBox добавил путь d/ d:\ не помогает
Встречал в интернете, что Docker в продакшне - это сложно, опасно и медленно. Однако не нашёл информации о том, насколько это критично для сайта 50к+ уникальных юзеров в сутки.
Его боялись раньше, когда он только появлялся и был недоделан. А сейчас крупные проекты уже спокойно переходят на него с Kubernetes, так как намного большее удобство работы с ним компенсирует небольшие потери скорости.
Удивительно, но совсем недавно была озвучена прямо противоположная точка зрения https://habr.com/ru/company/ruvds/blog/524942/
Прочитал. Противоположной точки не увидел. Увидел только посыл, что Docker и Kubernetes плохие, но альтернатив пока особо нет. И через лет пять может быть появятся.
Сложна сама задача поднять полноценный отказовоуйстойчивый кластер с динамическим распределением процессов по машинам, контролем работоспособности, внутренними сетями, маршрутизацией и балансировкой. И потом организовать в него деплой с бесшовным обновлением софта.
С контейнерами через Kubernetes это сделать сложно, но можно даже за один день. Но вручную без него сделать всё это же через bash или Ansible может оказаться ещё сложнее и занять недели.
С точки зрения опасности контейнеры дают небольшой плюс, что процесы в нём более-менее изолированы и порты сами по себе наружу не прокидываются. А то, как мы настраиваем Linux и пишем софт внутри контейнера в Dockerfile почти не отличается по безопасности от работы в Linux без контейнера. Было много крупных утечек из-за того, что кто-то не закрыл паролем ElasticSearch. А сайты на CMS ломают через SQL-иньекции в плагинах. Да, иногда появляются уязвимости самого Docker. Но как написано в статье, чаще проблема не в самом Docker, а в некомпетентности программистов.
А с точки зрения скорости разница небольшая.
Лучшее объяснение докера, что я встречал. С поправкой, что я встречал не так много, и лучшее - не значит идеальное (объяснение неймспейсов через префиксы - так себе идея, вряд ли незнакомый с первыми осведомлен о вторых (хотя может я - несчастливое исключение)).
Добрый день!
Подскажите пожалуйста, как добавлять пользователя www-data в образ при сборке т.к. вроде работа от root в контейнере не лучшая идея - но это не точно.
На сколько я понимаю что например php-fpm и php-cli работают от www-data ну покрайней мере точно пишут в var/log/name.log файлы. Поэтому большинство людей просто дают на эти директории(log,cache ...) права 777 - что вроде тоже не очень правильно. И ещё похоже что есть разница как добавлять пользователя в alpine и "не альпиновские" образы php.
Если не затруднит, объясните пожалуйста и ещё лучше с примерами.
я пытался вот так, но у меня всё валится:
Что именно и как валится?
Дмитрий, как используя технологию Docker научить php-fpm писать логи? Где можно увидеть логи php-fpm для просмотра ошибок? Спасибо за ответ.
Во всех популярных Docker образах уже настроено по умолчанию логирование в потоки stdout или stderr вместо файлов.
Эти логи из любого запущенного контейнера можно увидеть по команде
docker logs
илиdocker-compose logs
. И эти же логи сам Docker одновременно записывает в файл/var/lib/docker/containers/*/*-json.log
для каждого контейнера. Оттуда их при желании можно собирать любыми сервисами для сбора и мониторинга.А чтобы туда же логировал сообщения наш фреймворк достаточно настроить ему вместо файла вроде
app.log
записывать логи в псевдофайлphp://stderr
. В 24-ом эпизоде мы как раз это сделаем.Дмитрий, вопрос не по теме. Из-за чего может возникать такая ошибка PHP? Какие места проверить
т.е. не найден класс
core\event\base
. Файл физически присутствует. Это установка известной LMS Moodle Поднимается проект на Docker php:7.3-fpm-alpineСпасибо за ответ.
Точно не могу сказать. А без Docker запускается?
да, без Docker всё работает. На openserver windows локально, и на продакшене на сервере под управлением vesta apache+nginx. Хотел перенести проект по дистанционному обучению на готовой LMS Moodle на Docker. Но вот 2 недели не могу понять почему не получается.
Хотя бы примерно, на Ваш взгляд, куда нужно посмотреть?.
Использую этот шаблон окружения, немного переделав под себя. Вот мой докерфайл.
Весьма странно, что не срабатывает загрузка класса.
А с правами на файлы и папки проблем нет?
права везде максимальные стоят drwxrwxrwx
Посмотрев и опробовав (собезьянничав) несколько уроков, решил начать заново. Решил позапускать проекты с другой структурой каталогов. С апачем более-менее получается. Но вот nginx не хочет запускаться. Сделал в корне проекта всего две папки: public и docker. В первой положил index.html, во второй nginx/conf.d/default.conf и nginx/Dockerfile и php-fpm/Dockerfile. Их содержимое: nginx/conf.d/default.conf:
nginx/Dockerfile:
php-fpm/Dockerfile:
команды по запуску:
В таком виде первая команда ругается на путь к [2/3] COPY ./conf.d /etc/nginx/conf.d Если поменять на COPY ./docker/nginx/conf.d /etc/nginx/conf.d то образ собирается, но сайт не запускается. Пробовал помечать папку public как рутовую, но тоже не помогает.
И вопрос не по теме. Регулярно вижу комментарии с прокруткой и прочими тегами. А вот сам их сделать не могу. Это я их не вижу или они как-то автоматом создаются? Что не так?
В nginx тоже нужно скопировать папку public.
Здесь используется формат Markdown. Код оборачивается тройными косыми штрихами:
а можно узнать, где вы приобретаете домены?
Важные домены покупаю напрямую у больших регистраторов. А остальные регистрирую через хостинги, где из-за их оптового посредничества получается дешевле.
Использую такой докер для запуска nginx:
Выдает ошибку при сборке
Файлы все расположены правильно. Не понимаю в чем проблема.
Разобралась!
Вместо
COPY ./conf.d/ /etc/nginx/conf.d
нужно
COPY ./docker/nginx/conf.d/ /etc/nginx/conf.d
здравствуйте. урок супер, но есть проблема, после запуска с апач контейнер завершает работу и статус становится Exited. При этом с nginx работает норм, статус стоит Up, в браузере открывается.
Это потому что апач не стартанул из за неверной конфигурации. Чтобы увидеть причину, попробуйте запустить этот же образ в интерактивном режиме. Например так: docker run -it --network site --name nginx -p 8080:80 site-nginx Обычно сразу на консоли появляется полезная ругань. Ну или уже запускайте диагностические команды в интерактивном режиме внутри контейнера.
Проверьте его логи командой
docker-compose logs apache
Дмитрий, отличное практическое введение в предмет. А неадекватов, которые спорят ради спора - в бан плз.
ERROR: pull access denied for site-php-fpm, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
Боже, Иваний засрал всю ветку комментариев. Дмитрий, зачем вы вообще вступаете в диалог с отбитым на голову? Комментарии читаю если проскакивают какие-то технические аспекты, а тут больной человек нарисовался. Какой-то ноунейм пришел учить уму и разуму, лол.
Хочется побольше видео про докер, в уже 2024 году. И под виндой он лучше начал работать.
Столкнулся с проблемой, что при паузе, элементы управления не исчезают и загораживают низ, где консольные команды вводятся, в итоге на паузе не могу посмотреть ввод.
Можно исходники выложить? То что на 32 минуте автор говорит, что должно работать и при этом он сам это не проверяет, Dockerfile не показал. Я в комментах что-то нашел. И у меня в итоге консоли всё отработало, а сайт не открывается. И как проверить не понятно. Возможно index.php не скопировался или не туда.
В итоге запустилось в таком виде. По сути проблема была в путях копирования файлов в Dockerfile Смотрим в контейнере наличие файла index.php
docker/nginx/conf.d/default.conf:
Или войти через: