👮🏼♀️ Всем спокойно, СанЭпид станция👮🏼♀️
Один из механизмов, который помогает Docker изолировать контейнеры от хост-системы и других контейнеров называется cgroups. Cgroups управляют ресурсами, такими как CPU и память, чтобы предотвратить их перерасход.
Проверить конфигурацию cgroups для контейнера можно с помощью команды:
Она поможет вам понять, как ресурсы распределяются между контейнерами и оптимизировать их работу.
Один из механизмов, который помогает Docker изолировать контейнеры от хост-системы и других контейнеров называется cgroups. Cgroups управляют ресурсами, такими как CPU и память, чтобы предотвратить их перерасход.
Проверить конфигурацию cgroups для контейнера можно с помощью команды:
docker inspect <container_id>
Она поможет вам понять, как ресурсы распределяются между контейнерами и оптимизировать их работу.
🏃🏽 Беги, Форрест 🏃🏽
Без всяких докерфайлов и компоузов. Пришел, увидел, запустил - и все работает!!! Команда
Пример использования:
Этот пример запускает контейнер сNginx forrest_not_container в фоновом режиме и не пробрасывает никакой порт, потому что в фильме Форрест Гамп никаких портов не было😵💫.
Без всяких докерфайлов и компоузов. Пришел, увидел, запустил - и все работает!!! Команда
docker run это не стареющая классика, как и отсылка к фильму в названии поста. А полезна она для быстрого развертывания и тестирования различных приложений.Пример использования:
docker run forrest_not_container
Этот пример запускает контейнер с
👍4❤2
🪖 Sir, yes, sir! 🪖
Какая главная задача у Docker контейнера? Запускать изолированные друг от друга приложения! И в данной задаче нам хорошо может помочь инструкция
Пример использования
Команда CMD может быть переопределена при запуске контейнера с помощью флага
Какая главная задача у Docker контейнера? Запускать изолированные друг от друга приложения! И в данной задаче нам хорошо может помочь инструкция
CMD в Dockerfile. Она используется для определения команды, которая будет выполнена по умолчанию при запуске контейнера? Это позволяет задать начальную команду или скрипт.Пример использования
CMD:FROM ubuntu:latest
CMD ["echo", "Hello, Docker!"]
Команда CMD может быть переопределена при запуске контейнера с помощью флага
--command. Это полезно для гибкого управления поведением контейнера. Например, когда мы хотим передать какие-либо опции для нашего приложения.👍1
♠️ Есть два стула... 👍🏻
Тома в Docker — это один из механизмов управления данными,, который не зависит от контейнеров. Они позволяют сохранять данные даже после удаления контейнеров.
Существует два типа томов:
- именованные
- анонимные
Именованные тома создаются с уникальным именем и эти тома полезны для управления данными, так как их легко идентифицировать и монтировать в разные контейнеры.
Анонимные тома безымянны, а создаются они автоматически при запуске контейнера с флагом на использование томов.
Оба типа томов обеспечивают гибкость в управлении данными, позволяя вам выбирать наиболее подходящий способ хранения в зависимости от ваших потребностей.
Тома в Docker — это один из механизмов управления данными,, который не зависит от контейнеров. Они позволяют сохранять данные даже после удаления контейнеров.
Существует два типа томов:
- именованные
- анонимные
Именованные тома создаются с уникальным именем и эти тома полезны для управления данными, так как их легко идентифицировать и монтировать в разные контейнеры.
Анонимные тома безымянны, а создаются они автоматически при запуске контейнера с флагом на использование томов.
Оба типа томов обеспечивают гибкость в управлении данными, позволяя вам выбирать наиболее подходящий способ хранения в зависимости от ваших потребностей.
Я хочу посмотреть подробную информацию о моем контейнере. Какую команду для этого нужно ввести?
Anonymous Quiz
3%
docker build -t <one>:<two>
2%
docker rmi
94%
docker inspect <one>
2%
docker commit <one> <two>
♻️ 7 бед - один reset ♻️
А вот эта команда прям таки претендует на звание волшебной кнопки для решения почти всех бед контейнера. Увы, но только почти...
Для быстрого перезапуска контейнера, используйте команду:
Команда останавит и сразу же запустит контейнер заново. Легкий способ обновления конфигурации для ваших контейнеров без лишних усилий и первая команда при траблшутинге приложений!
А вот эта команда прям таки претендует на звание волшебной кнопки для решения почти всех бед контейнера. Увы, но только почти...
Для быстрого перезапуска контейнера, используйте команду:
docker restart <container_name>
Команда останавит и сразу же запустит контейнер заново. Легкий способ обновления конфигурации для ваших контейнеров без лишних усилий и первая команда при траблшутинге приложений!
🏴☠️ Портовый Жан-Батист 🏴☠️
Утилита
Заюзать его просто, как дважды два:
1. Описываем что за контейнеры мы хотим развернуть в файле
3. Наблюдаем бегущие строки запуска в терминале
4. А далее ловим логи в stdout
Утилита
docker-compose, а с некоторого времени плагин для docker docker compose значительно упрощает запуск и управление многоконтейнерными приложениями. Заюзать его просто, как дважды два:
1. Описываем что за контейнеры мы хотим развернуть в файле
docker-compose.yml
2. Для быстрого старта используем команду:docker-compose up
3. Наблюдаем бегущие строки запуска в терминале
4. А далее ловим логи в stdout
🔥3👍1
👨🏼🦳 Старикам тут не место 👨🏼🦳
Не prune-ом единым жив devops-инженер! Порою возникает необходимость удалить какой-то конкретный контейнер и на этот случай, конечно же есть команда.
Чтобы удалить остановленный контейнер, используйте:
Не prune-ом единым жив devops-инженер! Порою возникает необходимость удалить какой-то конкретный контейнер и на этот случай, конечно же есть команда.
Чтобы удалить остановленный контейнер, используйте:
docker rm <container_id>Быстро и эффективно ликвидирует контейнер и, в отличие от Чигура, делает свою работу не прибегая к случайности. Если вы, конечно, понимаете о чем я.😈
Telegram
Docker Ninja
🧹Сжигаем мосты 🧹
Не смотря на то, что докер это синоним минимализма, со временем, если не удалять старые образы, дисковое пространство закончится. Особенно часто такое происходит на билд-агентах.
Конечно же, существует команда удаления образов и прочих…
Не смотря на то, что докер это синоним минимализма, со временем, если не удалять старые образы, дисковое пространство закончится. Особенно часто такое происходит на билд-агентах.
Конечно же, существует команда удаления образов и прочих…
👍3
🗡 Кто ты, воин? 🗡
Наверное, мало кто задумывается, но то, что мы называем докером, на самом деле зовется Docker Engine.
Docker Engine по своей сути это технология контейнеризации и действует она как клиент-серверное приложение со следующей архитектурой:
- Сервер в виде демон-процесса
- API, через которое с
- Клиент в виде интерфейса командной строки (CLI)
CLI болтает с
Наверное, мало кто задумывается, но то, что мы называем докером, на самом деле зовется Docker Engine.
Docker Engine по своей сути это технология контейнеризации и действует она как клиент-серверное приложение со следующей архитектурой:
- Сервер в виде демон-процесса
dockerd.- API, через которое с
dockerd взаимодействуют клиентские приложения.- Клиент в виде интерфейса командной строки (CLI)
docker.CLI болтает с
dockerd через предоставленный API, но так же есть и другие клиенты, которые могу использовать либо API либо CLI. dockerd же управляет объектами Docker (images, containers и тд).Какой тип тома Docker создается автоматически, если не указано имя тома?
Anonymous Quiz
17%
Временный том
10%
Привязанный том
56%
Анонимный том
17%
Именованный том
📚 Ну это база! 📚
Директива
Например, чтобы начать с базового образа Ubuntu, пишем следующее:
Вот так вот берем базовый образ и добавляем свои уникальные слои (про Layered file system помним, ага?).
Директива
FROM в Dockerfile используется для указания базового образа. Базовый образ это основа для создания нашего собственного образа с блэк джеком и всеми вытекающими. Например, чтобы начать с базового образа Ubuntu, пишем следующее:
FROM ubuntu:latest
Вот так вот берем базовый образ и добавляем свои уникальные слои (про Layered file system помним, ага?).
FROM, к слову можно встретить в Dockerfile не один раз, но это уже совсем другая история.Telegram
Docker Ninja
🍰 Культурный слой контейнера 🍰
Знаете ли вы, что Docker использует технологию Layered File System? Это позволяет эффективно использовать дисковое пространство, так как общие слои между образами не дублируются. Каждый новый образ добавляет лишь измененные…
Знаете ли вы, что Docker использует технологию Layered File System? Это позволяет эффективно использовать дисковое пространство, так как общие слои между образами не дублируются. Каждый новый образ добавляет лишь измененные…
Docker Ninja pinned «🥷 Добро пожаловать на канал Docker Ninja! 🥷 Как известно, путь в тысячу ли начинается с одного шага. Поэтому не теряй времени и скорее подписывайся на канал. Здесь мы, ежедневно совершаем небольшой, но значительный шаг на бесконечном пути к мастерству владения…»
🏞 Из-за леса, из-за гор... 🏞
Хоть используя
И хоть из названия кажется, что мы будем что-то пулять, делать мы будем ровно противоположное - тянуть. А в нынешних суровых реалиях проксей и впн-ов, возможно, тянуть из самых далёких гор.
Програмироваем в терминале вот такое:
И далее, просто ждем.
Хоть используя
docker, хоть Dockerfile, хоть compose, нам всегда приходится работать с образами контейнеров. Но эти самые образы перед использованием приходится скачивать из какого-то Docker Registry. Поможет нам в этом команда docker pull. И хоть из названия кажется, что мы будем что-то пулять, делать мы будем ровно противоположное - тянуть. А в нынешних суровых реалиях проксей и впн-ов, возможно, тянуть из самых далёких гор.
Програмироваем в терминале вот такое:
docker pull <image_name>:<image_tag>
И далее, просто ждем.
🖖 Спокойно, коллега 🖖
Не все так плохо с pull-ом образов докера. Есть у этой технологии настолько крутая фишечка, что просто чума!
Именно она, помимо прочих преимуществ, облегчает и процесс скачивания образа.
Не все так плохо с pull-ом образов докера. Есть у этой технологии настолько крутая фишечка, что просто чума!
Именно она, помимо прочих преимуществ, облегчает и процесс скачивания образа.
🔥2
🚫 Экспонаты руками не трогать! 🚫
Каждый уважающий себя ниндзя знает зачем во многих музеях висит табличка "Экспонаты руками не трогать". Не для того, чтобы не портить дорогущие произведения искусства, а чтобы никто не нащупал каким образом получится упереть что-нибудь с собой.
Такое же правило работает и в контейнерной сфере.
Вокруг много желающий узнать мягкие места вашего прода🍑, чтобы потом наладить с вами контакт в лучших традициях фильмов Гачимучи. Поэтому, думайте прежде чем запустите свои образы на проде и не стесняйтесь использовать различные механизмы обеспечения безопасности контейнеров.
Один из таких механизмов -
Запуск контейнера в режиме
Конечно же запуск режима «только для чтения» не является панацеей безопасности (да их вообще не существует), но это вполне себе хороший шаг по смягчению последствий потенциальной атаки на приложение.
Каждый уважающий себя ниндзя знает зачем во многих музеях висит табличка "Экспонаты руками не трогать". Не для того, чтобы не портить дорогущие произведения искусства, а чтобы никто не нащупал каким образом получится упереть что-нибудь с собой.
Такое же правило работает и в контейнерной сфере.
Вокруг много желающий узнать мягкие места вашего прода🍑, чтобы потом наладить с вами контакт в лучших традициях фильмов Гачимучи. Поэтому, думайте прежде чем запустите свои образы на проде и не стесняйтесь использовать различные механизмы обеспечения безопасности контейнеров.
Один из таких механизмов -
read-only режим запуска:docker run --read-only alpine
Запуск контейнера в режиме
read-only предотвращает изменения файловой системы, что особенно полезно для повышения безопасности и обеспечения неизменности контейнера. Конечно же запуск режима «только для чтения» не является панацеей безопасности (да их вообще не существует), но это вполне себе хороший шаг по смягчению последствий потенциальной атаки на приложение.
👌2
⚠️ Disclamer ⚠️
Стоит отметить, что есть некоторые особенности использования режима read-only, которые в самый неподходящий момент могут вам что-то сломать.
Поэтому, настоятельно рекомендую поизучать этот вопрос самостоятельно!
Стоит отметить, что есть некоторые особенности использования режима read-only, которые в самый неподходящий момент могут вам что-то сломать.
Поэтому, настоятельно рекомендую поизучать этот вопрос самостоятельно!
❤1
Изучая Docker ты перепробовал кучу различных образов. Это оставило след на твоём рабочем компьютере. Диск забился под ноль и теперь на нем невозможно работать. Всё дело во множестве неиспользуемых образов. Как правильнее всего исправить эту проблему?
Anonymous Quiz
19%
docker rm <my_container> для каждого неиспользуемого контейнера
71%
docker system prune
5%
rm -rf /
5%
Купить новый диск
👍3
🫨 I wanna see you cry... 🫨
А все потому, что тема этого поста - "Отличие виртуализации от контейнеризации".
Да, я знаю, что об этом пишут изо всех утюгов, но не раскрыть эту тему, я просто не могу. Этого требуют мои дальнейшие планы позахвату мира развитию канала.
Но теперь ближе к телу.
Контейнер, это не полноценная операционная система. Это процесс, который имеет свои изолированные от других процессов ресурсы. Нигде, кроме как на существующей ОС, запустить контейнер не возможно, потому что для работы ему нужно ядро операционной системы. Сам он ее не имеет поэтому использует хостовую. Но это позволяет быстро запускать и останавливать контейнеры, экономя ресурсы.
Виртуализация, с другой стороны, создает полноценные виртуальные машины с собственным ядром операционной системы.
Специальный софт (гипервизор) позволяет нарезать аппаратные ресурсы одного большого сервера и распределять их между множеством операционных систем.
Это обеспечивает высокую изоляцию, но требует больше ресурсов и времени на запуск.
А все потому, что тема этого поста - "Отличие виртуализации от контейнеризации".
Да, я знаю, что об этом пишут изо всех утюгов, но не раскрыть эту тему, я просто не могу. Этого требуют мои дальнейшие планы по
Но теперь ближе к телу.
Контейнер, это не полноценная операционная система. Это процесс, который имеет свои изолированные от других процессов ресурсы. Нигде, кроме как на существующей ОС, запустить контейнер не возможно, потому что для работы ему нужно ядро операционной системы. Сам он ее не имеет поэтому использует хостовую. Но это позволяет быстро запускать и останавливать контейнеры, экономя ресурсы.
Виртуализация, с другой стороны, создает полноценные виртуальные машины с собственным ядром операционной системы.
Специальный софт (гипервизор) позволяет нарезать аппаратные ресурсы одного большого сервера и распределять их между множеством операционных систем.
Это обеспечивает высокую изоляцию, но требует больше ресурсов и времени на запуск.
🔥5
🪆Reset на reset-е, reset-ом погоняет🪆
Уж коли для обычного контейнера придумали команду reset, то для компоуза, который крутит по несколько контейнеров за раз, она напрашивалась и подавно!
Бацаем в терминале вот такое:
На выходе получаем полный рестарт всех сервисов, запущенных в данном контексте компоуза.
Довольно похоже на
Команда полезна, если поменяли конфигурационный файл какой-то аппликухи, а она не умеет применять конфигурации на лету. Но вот с чем эта команда не поможет, так это с изменениями в самом compose файле.
Для этого придётся полностью рестартовать контейнеры. Но это уже будет темой для одного из следующих постов.
Уж коли для обычного контейнера придумали команду reset, то для компоуза, который крутит по несколько контейнеров за раз, она напрашивалась и подавно!
Бацаем в терминале вот такое:
docker compose restart
На выходе получаем полный рестарт всех сервисов, запущенных в данном контексте компоуза.
Довольно похоже на
docker restart, не правда ли? В дальнейшем мы встретим её ещё не раз и вы в этом убедитесь!Команда полезна, если поменяли конфигурационный файл какой-то аппликухи, а она не умеет применять конфигурации на лету. Но вот с чем эта команда не поможет, так это с изменениями в самом compose файле.
Для этого придётся полностью рестартовать контейнеры. Но это уже будет темой для одного из следующих постов.
🔥2
🥴 И так сойдет... 🥴
Есть в
Например, чтобы указать, что контейнер будет прослушивать tcp порт 80, добавим в Dockerfile строку:
То же самое, но для udp:
Но не кажется ли вам, будто бы разработчики Docker сами не до конца разобрались, что же они сделали?
Я думаю, что у многих именно такие мысли. Поэтому так часто можно встретить докер образы, где не указаны никакие ExposedPorts. И очень даже зря!
Есть в
Dockerfile такая интересная инструкция - EXPOSE. Используется для указания портов, которые контейнер будет прослушивать во время выполнения. И самое интересное в ней то, что никаким поднятием портов она не занимается. Единственная ее функция - это документирование какой порт будет слушаться приложением внутри контейнера.Например, чтобы указать, что контейнер будет прослушивать tcp порт 80, добавим в Dockerfile строку:
EXPOSE 80
То же самое, но для udp:
EXPOSE 80/udp
Но не кажется ли вам, будто бы разработчики Docker сами не до конца разобрались, что же они сделали?
Я думаю, что у многих именно такие мысли. Поэтому так часто можно встретить докер образы, где не указаны никакие ExposedPorts. И очень даже зря!
👍2🗿1
👌🏻 Все что ни делается, к лучшему 👌🏻
И было бы опрометчиво считать разработчиков такого большого продукта дураками. Даже такая необязательная фича как
И было бы опрометчиво считать разработчиков такого большого продукта дураками. Даже такая необязательная фича как
EXPOSE портов продумана и сделана для упрощения деплоя!🔥2