Уроки Docker для начинающих / #4 - Dockerfile и свои образы

2024 ж. 9 Мам.
96 506 Рет қаралды

Выполнять команды в терминале не столь удобно, особенно когда речь идет про подключение образа с большим количеством настроек. В ходе урока мы с вами научимся работать с файлом Dockerfile. Он позволяет описать характеристики подключаемого образа.
✅ Полезные ссылки:
- Урок на сайте itProger: itproger.com/course/docker/4
⏰ Тайм-коды:
00:00 - Начало
00:20 - Что такое Dockerfile?
00:50 - VS Code и плагины
01:50 - Dockerfile
02:40 - Подключение OpenJDK
08:03 - Основной файл «Main.java»
09:05 - Сборка проекта
11:01 - Удаление образа
11:25 - Указываем порт
12:50 - Запуск проекта
18:00 - Заключительная часть
✔ Сообщество программистов: itproger.com/
✔ -------------
Вступай в группу Вк - vk.com/prog_life 🚀
Группа FaceBook - goo.gl/XW0aaP
Инстаграм itProger: / itproger_official
Instagram: / gosha_dudar
Telegram: t.me/itProger_official
Twitter - / goshadudar
- Уроки от #GoshaDudar 👨🏼‍💻
- Все уроки по хештегу #goshaLessons

Пікірлер
  • Сейчас (2023) расширение для контейнеров в VSCode называется Dev Containers

    @alqueswan7164@alqueswan7164 Жыл бұрын
    • Спасибо!

      @alr_ks@alr_ks11 ай бұрын
    • Спасибо тебе! Ты лучший!!

      @user-wt1fn6gr3h@user-wt1fn6gr3h2 ай бұрын
    • Большое спасибо!

      @user-yk1ek1bd7z@user-yk1ek1bd7zАй бұрын
    • В топ!

      @novguy2766@novguy276620 күн бұрын
  • Я настолько преисполнился в своём познании... Всегда интересно изучать что-то новое. Я под первым уроком задавался вопросом: кто бы мне мог нормально объяснить суть контейнеров. Тогда действительно было непонятно. Но начиная с третьего урока на практике я осознал жизнь бытия. Благодарю

    @nakamasama@nakamasama2 жыл бұрын
  • Спасибо, что разобрал тему на примере работы с java😂 Безмерно благодарен❤

    @cchbfdsgjhv9647@cchbfdsgjhv964711 ай бұрын
  • Выдаёт ошибку, что не удалось загрузить или найти класс мейн

    @watchtvshow2552@watchtvshow255211 ай бұрын
  • Совет. Если у вас при вводе команды docker build . - выдает ошибку failed to solve: the Dockerfile cannot be empty - то это значит что вы не сохранили сам файл проекта. CTRL+S или хз как в Маке, и этой ошибки не будет

    @akaumorist@akaumorist9 ай бұрын
    • Вот спасибо тебе.

      @kreex@kreex7 ай бұрын
    • Really you nice men

      @user-os3rp9fd6m@user-os3rp9fd6m2 ай бұрын
  • Спасибо тебе добрый человек! Очень интересный материал и объяснение!!

    @Aqwsaful@Aqwsaful4 ай бұрын
  • Спасибо огромнейшее!

    @Andrzej3935@Andrzej39352 жыл бұрын
  • Сейчас вроде бы Remote Containers для VScode это Dev Containers от того же Microsoft

    @MrMegaFirestarter@MrMegaFirestarter Жыл бұрын
    • Подтверждаю

      @KraftsovAlex@KraftsovAlex Жыл бұрын
  • Круто!😁😁😁

    @hanma83292@hanma832926 ай бұрын
  • Если у вас после команды build образ показывается в консоли, но его нельзя удалить (No such container: ID), а в приложении докера образа не видно (у меня образы собранные по примеру в видео отображались только в терминале) - попробуйте удалить образ командой "docker rmi ID". После этой команды у меня образ удалился и другие созданные из Dockerfile образы стали отображаться в приложении Docker

    @Shell_26@Shell_26 Жыл бұрын
  • Ты лучший!

    @user-qx3jt8fw1v@user-qx3jt8fw1v2 жыл бұрын
  • Спасибо!

    @user-bg3oc9to4n@user-bg3oc9to4n4 ай бұрын
  • Спасибо

    @Nick-zu9bi@Nick-zu9bi2 жыл бұрын
  • Помогло )

    @user-bb4qe8tk7e@user-bb4qe8tk7e Жыл бұрын
  • Спасибо большое!

    @kanvoy@kanvoy2 жыл бұрын
  • А почему мы ввели run и контейнер не запустился в докере хотя он написал привет мир? Или если метод майн останавливается то контейнер так же завершает поток?

    @user-zz4uj1mr5f@user-zz4uj1mr5f10 ай бұрын
  • 09:29 docker build . приводит к такой ошибке failed to solve with frontend dockerfile.v0: failed to create LLB definition: the Dockerfile cannot be empty

    @VladislavMavrin@VladislavMavrin4 ай бұрын
    • Нашли, как исправить?

      @leona_a@leona_a2 ай бұрын
  • 11:20 если не удалить созданный образ и ещё раз сделать docker build. создастся ещё один образ, который будет дочерним к первому?

    @tema_skakun@tema_skakun Жыл бұрын
  • Второго расширения которое надо скачать нету в магазине расширений именно под тем именем, но как я понял, Dev Containers это то же самое

    @akaumorist@akaumorist9 ай бұрын
  • Какую команду писать в RUN, если образ Nodeдля JS?

    @leilasalieva9756@leilasalieva9756 Жыл бұрын
  • Спасибо большое за такие понятные видео!) Подскажите, пожалуйста, есть ли подобные видео насчет портов? не совсем поняла откуда мы взяли 3001 и т.д.

    @alexandratopalidi2572@alexandratopalidi25727 ай бұрын
    • Можно указать любой свободный порт. 3001 просто для примера был указан. Для большего понимания, нужно изучать основы сетей TCP/IP

      @user-mz9vc5xw8c@user-mz9vc5xw8c3 ай бұрын
  • Супер разбор, спасибо.Хотел додать что для удаления образа можно использовать "docker rmi ...." вместо "docker image rm ...."и не нужно писать всё ID образа достаточно 2-3 первых символа.

    @user-vq3ft3rw5y@user-vq3ft3rw5y2 ай бұрын
  • Молодец, хороший курс по докеру для новичков, резануло только слух "порядок команд не важен" исполняться будет но порядок все-таки важен, от менее часто изменяющегося состояния команд к более частым сверху вниз

    @maxreshetnik3943@maxreshetnik39432 жыл бұрын
    • Да, я тут недавно несколько часов голову ломал, почему у меня не запускался Apache, а всего лишь не в том порядке.

      @stangevg@stangevg2 жыл бұрын
  • Столкнулся с проблемой при команде БИЛД failed to solve with frontend dockerfile.v0: failed to create LLB definition: the Dockerfile cannot be empty Далее перепробовал все. Ничего не помогает. И в терминале заметил у вас стоит кодировка Bash, а у меня только powershell. Можете подсказать как это все исправить? Спасибо за уроки

    @MrCrash20071@MrCrash200712 жыл бұрын
    • У меня такая же проблема, ждём пояснения🤔

      @lapatylin@lapatylin2 жыл бұрын
    • откройте файл в блокноте из проводника, он будет пустой, чтобы все хорошо запустилось, нужно нажать "сохранить", это как для докер файла, так и для java

      @markstasowski5580@markstasowski55802 жыл бұрын
    • Я в VScode нажал файл , автосохранение , и все сработало

      @geraltofrivia4749@geraltofrivia4749 Жыл бұрын
    • нужно включить автосохранение

      @user-uu3yi5fr6p@user-uu3yi5fr6p Жыл бұрын
  • Remote containers похоже теперь Dev Containers называется

    @timbright397@timbright397 Жыл бұрын
  • Всем привет. Подскажите, все делал как по уроку, а в репозитории у меня так не появился файл с таким же весом, как и openjdk. Какие либо расширения дополнительно нужно было устанавливать?

    @Th3_g3ntl3m3n@Th3_g3ntl3m3n Жыл бұрын
    • в процессе выполнения 'docker build .' никаких ошибок не вылезало?

      @user-rr1hz8ye3j@user-rr1hz8ye3j Жыл бұрын
  • нонче Remote - Containers называется Dev Containers

    @romixweb@romixweb7 ай бұрын
  • Интереснооо .-.

    @MR-bo8bv@MR-bo8bv2 жыл бұрын
  • У меня вообще интересная ситуация получается: "failed to solve with frontend dockerfile.v0: failed to create LLB definition: the Dockerfile cannot be empty"

    @KonstantinVasilevsky@KonstantinVasilevsky Жыл бұрын
    • Нужно сохранить докер-файл и заново запустить build

      @user-qv1ie6jc9w@user-qv1ie6jc9w Жыл бұрын
  • если нужно снести образ то можно командой docker rmi hash ТЕ для кондейнера rm а для образа rmi

    @alekseigrin6126@alekseigrin61262 жыл бұрын
  • минут 15 искал где в Visual Studio Code приложения, оказалось что у меня Visual Studio (без Code) и такое бывает)

    @bolatmukashev2830@bolatmukashev28309 ай бұрын
  • лайк+подписка+коммент)))) Нужно по Kubernetes, Ansible, Terraform, Azure,GCP, AWS. Знаю - не треснет

    @user-tt8kf5cb1e@user-tt8kf5cb1e2 ай бұрын
  • расширение для VisualStudio - Remote Containers не найдено, ближайшее это Dev Containers (по описанию совпадает 100%)

    @nilsharafutdinov3679@nilsharafutdinov36793 ай бұрын
  • Ставки на спорт 50 на 50 👍

    @kontent4049@kontent40492 жыл бұрын
  • Можете, пожалуйста, написать такой же код только для питона. Не понимаю, что нужно прописывать в run и cmd.

    @user-dn6vs1ob9c@user-dn6vs1ob9c2 жыл бұрын
    • узнали?

      @xzemple5491@xzemple54912 жыл бұрын
  • На 14:40 образ по итогу не удаляется, сначала нужно rm контейнеры, которые он использует

    @anastasiadorohina6812@anastasiadorohina68124 ай бұрын
  • Добрый день, не пойму у меня после команды docker run -p 3001:8001 b3b05af661be пишет что /bin/sh: [java,: command not found :((

    @sacccp@sacccp2 жыл бұрын
    • CMD ["java", "Main"] java и Main должны бить в двойных кавычках

      @user-yg4no8qb3z@user-yg4no8qb3z Жыл бұрын
  • Итого не удалялся образ как в команде, даже остановка контейнера не помогла который его использует, помогло удалить контейнер и затем удалить образ

    @user-is7nc3rx8j@user-is7nc3rx8j Жыл бұрын
  • Обязательно нажмите сохранить файл докер и отдельно файл джава, только после собирайте и запускайте!

    @user-vy9rz5cl3n@user-vy9rz5cl3n4 ай бұрын
  • А можно допустим написать игру на каком-то языке для виндовс и запустить его на линукс с помощью докера?

    @shdbdsusjebj9745@shdbdsusjebj97452 жыл бұрын
    • Засунь винду в докер

      @user-un9py5hz4s@user-un9py5hz4s Жыл бұрын
  • Привет. Хочу дать небольшой совет, как обычный зритель. Юскейс: мне понравилось видео, я включил весь плейлист. Смотрю очередное видео, мне очень нравится, думаю что досмотрю и обязательно поставлю лайк. А может и коммент напишу. Видео заканчивается(что понятно по предложению подписаться), я беру в руку телефон, чтоб поставить лайк, а там уже включилось следующее видео. Теперь, чтоб поставить лайк тому видео, мне надо свернуть это, где уже началось что-то интересное, открыть плейлист, найти предыдущее видео, включить его, поставить лайк и вернуться обратно на новое видео. Многие ли станут так париться? Просто поставят лайк новому видео, а старое останется без него. К чему я веду, нужна финальная заставка. 3, а лучше 5 секунд. Не слишком длинная, но чтоб можно было успеть схватить телефон и влепить класс 👍

    @liosha2007@liosha20072 жыл бұрын
    • Когда он говорит около 20 секунд в конце "подписываемся, ставим лайки блаблабла" можно спокойно успеть поставить лайк и переключиться на следующее видео

      @nakamasama@nakamasama2 жыл бұрын
    • @@nakamasama я смотрю и другие каналы, на многих из них подписаться предлагают в середине, а то и несколько раз за видео. Потому эти фразы для меня не являются признаком конца видео. В любом случае, я не говорю, что все тормозят, как и я. Только описал свой случай и предположил, что я такой не один.

      @liosha2007@liosha20072 жыл бұрын
    • @@liosha2007 Я Вас понимаю. Про себя расскажу. Я тоже подписан на 125+ каналов и на всех подписаться просят и в начале, и в середине, и в конце видео. Поэтому это действительно не показатель. Однако лично у меня есть чуйка, когда видео заканчивается. Я не знаю, сколько длится видео, но по фразам типа "мы просмотрели", "мы проверили", "остальное будет в следующей серии" и т.д. (таких шаблонных фраз, если мозги поднапрячь, можно с три десятка вспомнить), я понимаю, что видео почти закончилось, ставлю лайк и перехожу на следующее видео, при чём до завершения видео остаётся от 10 до 60 секунд. Это столько авторы обсуждают после ролика, что они сделали в этом ролике и что планируют дальше. Я всегда это пропускаю. Но я сам так не всегда делаю. Например, если видео открыто на фоне и я его слушаю, но при этом я занимаюсь ещё чем-то другим (играю в игры, что-то пишу), то я слушаю и окончание видео и только после того, как оно завершится, ставлю лайк и перехожу на следующее видео.

      @nakamasama@nakamasama2 жыл бұрын
    • И ещё по поводу плей-листов. Можно просто выключить авто-воспроизведение. Тогда видео не будет переключаться. Вы спокойно успеваете поставить лайк и включить следующее видео. Мне легче и удобнее так, а когда видео само переключается - меня это бесит и раздражает. Кому-то одно нравится, кому-то второе. Это вкусовщина.

      @nakamasama@nakamasama2 жыл бұрын
  • Изображение ??

    @18maisi@18maisi Жыл бұрын
  • Вот не понял, зачем здесь папка java указывается в COPY и WORKDIR. Она ведь не используется в итоге.

    @bubblegum21@bubblegum212 жыл бұрын
    • Команда WORKDIRиспользуется для определения рабочего каталога контейнера Docker в любой момент времени. Команда указана в Dockerfile. Любая RUN, CMD, ADD, COPYили ENTRYPOINTкоманда будет выполняться в указанном рабочем каталоге.

      @dmitriibarsukov4113@dmitriibarsukov4113 Жыл бұрын
  • если образ это blueprint, а контейнер непосредственно окружение в которой все работает. так может файлы будут скопированы в контейнер, а не в образ. а то я путаюсь.

    @EgorDemeshko@EgorDemeshko2 ай бұрын
    • похоже все же образ

      @EgorDemeshko@EgorDemeshko2 ай бұрын
    • тоесть image это файлы кода, разного кода, в том числе хоть операционки, если это убунту. грубо говоря файлы и папки на выключенном компе., конгтейнер всетаки среда исполнения, и если контейнер запущен это всеравно что включить комп.

      @EgorDemeshko@EgorDemeshko2 ай бұрын
    • да. название зря не указали)) погуглил docker build -t myapp - myapp собственно название.

      @EgorDemeshko@EgorDemeshko2 ай бұрын
    • где-то ж услашал что образ blueprint так и засело в голову. что-то важно пять дней подряд не можешь запомнить, а что-то мимолетное прям глубоко закапывается.

      @EgorDemeshko@EgorDemeshko2 ай бұрын
    • нажми на кнопку, получишь результат.

      @EgorDemeshko@EgorDemeshko2 ай бұрын
  • c 0:54 от куда те приложения скачивать? Ты обьясни нормально!

    @user-zq7et2wt1h@user-zq7et2wt1h Жыл бұрын
    • это редактор, можно notepad++ использовать вместо него

      @pugreptiles4601@pugreptiles460110 ай бұрын
  • максимально не удобно натягивать это видео на питон, если делаешь первый раз

    @g0tem449@g0tem44911 ай бұрын
  • Весь этот курс - издевательство какое-то. Клиент: я хочу построить спорткар своими руками. Помощник: - обучает как сделать деревянную повозку. Так и эти видеоуроки. Они бессмысленны. Никто не занимается докером ради приложения уровня "хелло ворлд". Человек который изучает докер - это программист который написал проект с кучей зависимостей, и хочет его запустить в докере. Соответственно у него млн вопросов из-за ошибок которые он получает но не знает что с ними делать. Например: я юзаю мавен, мне уже не подходит простой openjdk, который к тому же отказывается компилить проекты которые юзают java 21. Как вообще работать с зависимостями Spring? Selenium? как докеру понять что мне нужно не просто запустить javac main а мне нужно сраный мавен стартануть а тот должен запустить спринг, ну или наоборот, хер знает как оно там под капотом работает. И потом где эти директории которые прописываются типо /usr/src/app ....Где они? Их нет ни в докере, ни в его директории хранилища, ни в проекте... А после пары неудачных запусков докерфайла у меня - 9гб места на диске С, а докер показывает просто полурабочий образ весом 500мб. Что с этим делать? Почему докер жрет гигабайты быстрее чем я обучаюсь? ВОт на эти вопросы я хочу получить ответы изучая докер. А не вот это вот все....

    @saiko_rodion@saiko_rodion4 ай бұрын
    • Читаешь мои мысли дружище

      @SuhoiMan@SuhoiMan3 ай бұрын
    • ну неудвивтельно, что ты не можешь решить все эти проблемы, ведь ты даже прочитать текст внимательно не можешь, куда уже там докер. Курс называется "для начинающих". Что ты хочешь от него? С твоими вопросами только гуглить и искать инфу самостоятельно, а не курсы для начинающих смотреть.

      @user-zd7qv9iw9t@user-zd7qv9iw9t2 ай бұрын
    • @@user-zd7qv9iw9t Докер априори начинающим не нужен. Все равно что в детском саду преподавать высшую математику, назвав курс - высшая математика для начинающих....

      @saiko_rodion@saiko_rodion2 ай бұрын
    • Хреновый ты программист, если даже не знаешь как все под капотом работает и не можешь понять для чего мавен и ботинок

      @user-tx8br4zn1s@user-tx8br4zn1s2 ай бұрын
    • ​@@user-tx8br4zn1s Видимо я лучше тебя, раз я первым разобрался с докером и со всем остальным мусором который никак не влияет на мой заработок. А ты только ща посмотрел видос и отписал. Я уже проект успел доделать, задеплоить и получить деньги, пока ты тошнотворно изучал то, что в принципе не важно. 99.9% программистов не понимают почему компьютер понимает исключительно бинарный код, но как-то ж программируют... А я знаю, и дальше че? Мне кто-то заплатил хоть раз за эти знания? Нет. Вот и знание мавена и прочего шлака элементарно можно пропускать потому что за это не платят. Платят по факту конечного результата. Лучший айтишник это тот кто добивается результата так же как игроки спидраннеры. А все остальное вкусовщина. Хочешь знать - учи. Дело каждого.

      @saiko_rodion@saiko_rodion2 ай бұрын
  • первый

    @user-kr7gd6ph5u@user-kr7gd6ph5u2 жыл бұрын
    • второй

      @KONUNGRVADIM@KONUNGRVADIM2 жыл бұрын
  • Четвёртый

    @user-gu5fx4zu6x@user-gu5fx4zu6x2 жыл бұрын
  • Спасибо . Сними еще про Кали линукс

    @mirandal9987@mirandal9987 Жыл бұрын
  • Тупейшее объяснение докерфайла. Ничего не понятно. Зачем указать везде корневую папку. Покажи как работать, когда файл находится глубоко в проекте. На винде можно запутаться со слэшами, но урок конечно записан на макОС, которого у большинства нет и никогда не будет, а под винду никаких оговорок не сказано. Переслушал объяснение про RUN и CMD. Объяснено на отвали, каким то кривым языком. Попытка объяснить разницу выглядела как скорее попытка объяснить схожесть.

    @ZeBatua@ZeBatua5 ай бұрын
  • Как по мне так неудачный пример для урока...

    @skillmantd@skillmantd3 күн бұрын
  • Блин, ну не джавак же, мои ушиииии, как же режет😂 Это же простой английский 1 класса - алфавит 😮 Мы же не говорим к++, мы говорим си++, поэтому джаваси))))

    @nikolai.horetski@nikolai.horetski2 ай бұрын
    • Английский первого класса тут не причем. Если javac и читается как джаваси, то только потому что "C" это коращение второго слова. Вы же не будете читать слова aztec, comic, Mac, как атстеси, комиси, маси. С точки зрения английского, он произнес как раз-таки правильно.

      @nekolay9693@nekolay9693Ай бұрын
KZhead