Docker для начинающих: что это такое и как пользоваться
Статей про Docker много не бывает.
В этом материале мы разберём базу: что такое Docker, как он работает и зачем нужен, а затем пошагово пройдём путь от установки до запуска первого контейнера.
https://habr.com/ru/companies/netologyru/articles/967546/
📲 Мы в MAX
#devops #девопс
Подпишись 👉@i_DevOps
Статей про Docker много не бывает.
В этом материале мы разберём базу: что такое Docker, как он работает и зачем нужен, а затем пошагово пройдём путь от установки до запуска первого контейнера.
https://habr.com/ru/companies/netologyru/articles/967546/
#devops #девопс
Подпишись 👉@i_DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
K8s ASA: Интерфейс хранения данных
Как и большинство серверов API, одной из основных функций сервера API Kubernetes, если не главной, является получение данных, их хранение и последующее возвращение по запросу. Сегодня мы сосредоточимся на том, как сервер API хранит данные.
https://danielmangum.com/posts/k8s-asa-the-storage-interface/
📲 Мы в MAX
#devops #девопс
Подпишись 👉@i_DevOps
Как и большинство серверов API, одной из основных функций сервера API Kubernetes, если не главной, является получение данных, их хранение и последующее возвращение по запросу. Сегодня мы сосредоточимся на том, как сервер API хранит данные.
https://danielmangum.com/posts/k8s-asa-the-storage-interface/
#devops #девопс
Подпишись 👉@i_DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2
Как я уменьшил размер образа docker на 40%
Ежедневно по работе я сталкиваюсь с Dockerfile, написал несколько из них самостоятельно, создавал контейнеры и всё такое. Но я никогда не публиковал их в реестре docker hub. Мне хотелось создать ugit — инструмент для отмены команд git (написанный в виде шелл‑скрипта), который бы могли использовать люди, не любящие устанавливать случайные шелл‑скрипты из Интернета.
Да‑да, знаю. НАДО ПЕРЕПИСАТЬ ЕГО НА GO/RUST/ЕЩЁ КАКОМ‑ТО ВОЛШЕБНОМ ЯЗЫКЕ. Сейчас скрипт состоит из пятисот с лишним строк Bash, поэтому я перепишу его на другом языке только под страхом смертной казни. Кроме того, в ugit уже есть практически все функции (осталось реализовать отмену лишь небольшого количества команд, используемых не так часто).
В этой статье я расскажу о том, как написал официальный Dockerfile для ugit (шелл‑скрипта) и снизил размер образа почти на 40% (с 31,4 МБ до 17,6 МБ), выполняя пошаговые попытки по инструкции. Надеюсь, это замотивирует других любителей шелла тоже публиковать свои скрипты в виде образов docker!
https://habr.com/ru/articles/791426/
original https://bhupesh.me/publishing-my-first-ever-dockerfile-optimization-ugit/
📲 Мы в MAX
#devops #девопс
Подпишись 👉@i_DevOps
Ежедневно по работе я сталкиваюсь с Dockerfile, написал несколько из них самостоятельно, создавал контейнеры и всё такое. Но я никогда не публиковал их в реестре docker hub. Мне хотелось создать ugit — инструмент для отмены команд git (написанный в виде шелл‑скрипта), который бы могли использовать люди, не любящие устанавливать случайные шелл‑скрипты из Интернета.
Да‑да, знаю. НАДО ПЕРЕПИСАТЬ ЕГО НА GO/RUST/ЕЩЁ КАКОМ‑ТО ВОЛШЕБНОМ ЯЗЫКЕ. Сейчас скрипт состоит из пятисот с лишним строк Bash, поэтому я перепишу его на другом языке только под страхом смертной казни. Кроме того, в ugit уже есть практически все функции (осталось реализовать отмену лишь небольшого количества команд, используемых не так часто).
В этой статье я расскажу о том, как написал официальный Dockerfile для ugit (шелл‑скрипта) и снизил размер образа почти на 40% (с 31,4 МБ до 17,6 МБ), выполняя пошаговые попытки по инструкции. Надеюсь, это замотивирует других любителей шелла тоже публиковать свои скрипты в виде образов docker!
https://habr.com/ru/articles/791426/
original https://bhupesh.me/publishing-my-first-ever-dockerfile-optimization-ugit/
#devops #девопс
Подпишись 👉@i_DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
tofuenv — это лёгкий и удобный инструмент для управления виртуальными окружениями Python. Он создан с акцентом на минимализм и простоту использования, чтобы разработчики могли быстро создавать и переключаться между окружениями.
Основные возможности:
- Упрощённое создание и активация виртуальных окружений.
- Лёгкая интеграция с популярными инструментами.
- Минимальная зависимость от внешних библиотек.
https://github.com/tofuutils/tofuenv
📲 Мы в MAX
#devops #девопс
Подпишись 👉@i_DevOps
Основные возможности:
- Упрощённое создание и активация виртуальных окружений.
- Лёгкая интеграция с популярными инструментами.
- Минимальная зависимость от внешних библиотек.
https://github.com/tofuutils/tofuenv
#devops #девопс
Подпишись 👉@i_DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - tofuutils/tofuenv: OpenTofu version manager
OpenTofu version manager. Contribute to tofuutils/tofuenv development by creating an account on GitHub.
👍3
Forwarded from Bash Советы
📂 Быстрое создание структуры директорий в Linux
Иногда нужно быстро создать целую структуру папок. Вручную - долго. На помощь приходит
✅ Этот однострочник создаст папки
Фишка: можно создавать вложенные структуры сразу:
Это создаст:
-
-
-
-
Полезно, если нужно быстро подготовить окружение для проекта 🚀
👉@bash_srv
Иногда нужно быстро создать целую структуру папок. Вручную - долго. На помощь приходит
mkdir с флагом -p:
mkdir -p /var/www/project/{css,js,images,fonts}
✅ Этот однострочник создаст папки
css, js, images, fonts внутри /var/www/project, даже если родительские директории ещё не существуют.Фишка: можно создавать вложенные структуры сразу:
mkdir -p /opt/data/{logs/{nginx,mysql},backups/{daily,weekly}}
Это создаст:
-
/opt/data/logs/nginx-
/opt/data/logs/mysql-
/opt/data/backups/daily-
/opt/data/backups/weeklyПолезно, если нужно быстро подготовить окружение для проекта 🚀
👉@bash_srv
🔥9❤1👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1🤡1
🌟 GitHub Actions для Terraform 🌟
Если вы используете Terraform и хотите интегрировать его с CI/CD процессами на GitHub Actions, используйте библиотеку terraform-github-actions.
С её помощью вы сможете:
- Автоматизировать и тестировать Terraform-код.
- Настраивать проверки terraform plan и terraform apply.
- Ускорить деплой инфраструктуры.
Документация в репозитории описывает примеры использования и тонкости настройки.
https://github.com/dflook/terraform-github-actions
📲 Мы в MAX
#devops #девопс
Подпишись 👉@i_DevOps
Если вы используете Terraform и хотите интегрировать его с CI/CD процессами на GitHub Actions, используйте библиотеку terraform-github-actions.
С её помощью вы сможете:
- Автоматизировать и тестировать Terraform-код.
- Настраивать проверки terraform plan и terraform apply.
- Ускорить деплой инфраструктуры.
Документация в репозитории описывает примеры использования и тонкости настройки.
https://github.com/dflook/terraform-github-actions
#devops #девопс
Подпишись 👉@i_DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
💡Local Path Provisioner — это удобное решение для предоставления локального хранилища в Kubernetes-кластерах. Оно позволяет пользователям создавать PersistentVolume на узлах с использованием локального хранилища.
Основные преимущества:
- Простая настройка и использование.
- Гибкость в указании путей для хранения.
- Отличный выбор для разработки и тестирования.
https://github.com/rancher/local-path-provisioner/tree/master
📲 Мы в MAX
#devops #девопс
Подпишись 👉@i_DevOps
Основные преимущества:
- Простая настройка и использование.
- Гибкость в указании путей для хранения.
- Отличный выбор для разработки и тестирования.
https://github.com/rancher/local-path-provisioner/tree/master
#devops #девопс
Подпишись 👉@i_DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Как работают контейнеры: создаём Docker-подобный контейнер с нуля 🛠️
Одна из самых подробно исследованных работ о контейнерах, которые я писал на данный момент. Узнайте, как создать реалистичный контейнер уровня Docker, используя только стандартные команды Linux.
https://labs.iximiuz.com/tutorials/container-filesystem-from-scratch
📲 Мы в MAX
#devops #девопс
Подпишись 👉@i_DevOps
Одна из самых подробно исследованных работ о контейнерах, которые я писал на данный момент. Узнайте, как создать реалистичный контейнер уровня Docker, используя только стандартные команды Linux.
https://labs.iximiuz.com/tutorials/container-filesystem-from-scratch
#devops #девопс
Подпишись 👉@i_DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5💩1
Juniper routers, как правильно собрать syslogs и красиво оформить dashboard в grafana
В данное статье рассматривается порядок развертывания системы сбора и анализа логов с сетевых устройств производства Juniper Networks, посредством применения «Vector», «Loki» и «Grafana». Подробно описан процесс развертывания данных инструментов с помощью docker‑compose. Помимо этого, в статье затрагивается конфигурация сетевых устройств с использованием Ansible. Отдельное внимание отведено визуализации данных в Grafana, посредством создания dashboard.
https://habr.com/ru/articles/876542/
📲 Мы в MAX
#devops #девопс
Подпишись 👉@i_DevOps
В данное статье рассматривается порядок развертывания системы сбора и анализа логов с сетевых устройств производства Juniper Networks, посредством применения «Vector», «Loki» и «Grafana». Подробно описан процесс развертывания данных инструментов с помощью docker‑compose. Помимо этого, в статье затрагивается конфигурация сетевых устройств с использованием Ansible. Отдельное внимание отведено визуализации данных в Grafana, посредством создания dashboard.
https://habr.com/ru/articles/876542/
#devops #девопс
Подпишись 👉@i_DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Topolvm
Это проект с открытым исходным кодом, обеспечивающий управление томами для Kubernetes на основе LV (Logical Volume). Он позволяет эффективно использовать локальное хранилище на узлах кластера и автоматизирует создание, управление и удаление томов.
Среди основных возможностей Topolvm:
- Dynamic provisioning: автоматическое создание логических томов для Kubernetes PersistentVolumeClaims.
- Тонкое использование ресурсов: поддержка thin provisioning, что позволяет эффективно расходовать доступное пространство.
- Интеграция с CSI: поддержка интерфейса CSI (Container Storage Interface) для работы с Kubernetes.
- Полный контроль над хранилищем: локальные тома автоматически распределяются на основе доступных ресурсов.
https://github.com/topolvm/topolvm/
📲 Мы в MAX
#devops #девопс
Подпишись 👉@i_DevOps
Это проект с открытым исходным кодом, обеспечивающий управление томами для Kubernetes на основе LV (Logical Volume). Он позволяет эффективно использовать локальное хранилище на узлах кластера и автоматизирует создание, управление и удаление томов.
Среди основных возможностей Topolvm:
- Dynamic provisioning: автоматическое создание логических томов для Kubernetes PersistentVolumeClaims.
- Тонкое использование ресурсов: поддержка thin provisioning, что позволяет эффективно расходовать доступное пространство.
- Интеграция с CSI: поддержка интерфейса CSI (Container Storage Interface) для работы с Kubernetes.
- Полный контроль над хранилищем: локальные тома автоматически распределяются на основе доступных ресурсов.
https://github.com/topolvm/topolvm/
#devops #девопс
Подпишись 👉@i_DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Kubernetes 101: назначение Pod'ов на узлы
В статье подробно рассматриваются механизмы назначения Pod'ов на узлы в Kubernetes. Автор объясняет такие инструменты, как nodeSelector, nodeAffinity и taints/tolerations, которые позволяют контролировать, где именно будут запускаться ваши Pod'ы.
🔧 Основные моменты:
- nodeSelector — простой способ указать, на каком узле должен работать Pod.
- Node Affinity — более гибкий способ задания условий, включая hard и soft требования.
- Taints и Tolerations — эффективный способ предотвращать запуск Pod'ов на неподходящих узлах, если те не "терпят" заданные taints.
Эти инструменты помогают оптимизировать использование ресурсов кластера и избегать перегрузки узлов.
https://hwchiu.medium.com/kubernetes-101-assigning-pod-to-nodes-e52eebb4bc38
📲 Мы в MAX
#devops #девопс
Подпишись 👉@i_DevOps
В статье подробно рассматриваются механизмы назначения Pod'ов на узлы в Kubernetes. Автор объясняет такие инструменты, как nodeSelector, nodeAffinity и taints/tolerations, которые позволяют контролировать, где именно будут запускаться ваши Pod'ы.
🔧 Основные моменты:
- nodeSelector — простой способ указать, на каком узле должен работать Pod.
- Node Affinity — более гибкий способ задания условий, включая hard и soft требования.
- Taints и Tolerations — эффективный способ предотвращать запуск Pod'ов на неподходящих узлах, если те не "терпят" заданные taints.
Эти инструменты помогают оптимизировать использование ресурсов кластера и избегать перегрузки узлов.
https://hwchiu.medium.com/kubernetes-101-assigning-pod-to-nodes-e52eebb4bc38
#devops #девопс
Подпишись 👉@i_DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Какая роль у контроллера DaemonSet?
Контроллер DaemonSet в Kubernetes играет важную роль в обеспечении того, чтобы определённый под (Pod) запускался на каждом узле (Node) кластера (или на определённом подмножестве узлов, если заданы ограничения). Основные задачи и функции контроллера DaemonSet:
1. Запуск подов на каждом узле
- DaemonSet гарантирует, что на каждом узле кластера будет запущен экземпляр указанного пода.
- Это полезно для задач, которые должны выполняться на каждом узле, например:
- Сбор логов (например, Fluentd, Logstash).
- Мониторинг (например, Prometheus Node Exporter).
- Сетевые плагины (например, Calico, Weave).
- Хранение данных (например, распределённые хранилища).
2. Автоматическое добавление подов при добавлении новых узлов
- Когда в кластер добавляется новый узел, DaemonSet автоматически создаёт на нём под.
- Это обеспечивает согласованность и автоматизацию развёртывания.
3. Удаление подов при удалении узлов
- Если узел удаляется из кластера, DaemonSet автоматически удаляет под, связанный с этим узлом.
4. Поддержка селекторов и толерантностей
- DaemonSet позволяет использовать селекторы для выбора узлов, на которых будут запускаться поды.
- Также можно использовать толерантности (tolerations), чтобы разрешить запуск подов на узлах с определёнными метками (например, на узлах с taint
5. Обновление и управление подами
- DaemonSet поддерживает стратегии обновления (например, RollingUpdate или OnDelete), что позволяет обновлять поды на узлах с минимальным простоем.
- Контроллер следит за состоянием подов и обеспечивает их корректную работу.
Примеры использования DaemonSet:
- Сетевые плагины: Запуск сетевых агентов на каждом узле для обеспечения сетевой связности.
- Мониторинг: Запуск агентов сбора метрик (например, Prometheus Node Exporter) на каждом узле.
- Логирование: Запуск агентов сбора логов (например, Fluentd) на каждом узле.
- Хранение данных: Запуск компонентов распределённых хранилищ (например, Ceph, GlusterFS).
Отличие DaemonSet от других контроллеров:
- Deployment: Запускает определённое количество реплик подов, которые могут быть распределены по любым узлам.
- StatefulSet: Управляет подами с устойчивыми идентификаторами и хранилищем.
- DaemonSet: Запускает по одному поду на каждом узле (или на подмножестве узлов).
Таким образом, роль контроллера DaemonSet заключается в обеспечении запуска и поддержания определённого пода на каждом узле кластера, что делает его идеальным инструментом для задач, которые должны выполняться на всех узлах.
📲 Мы в MAX
#devops #девопс
Подпишись 👉@i_DevOps
Контроллер DaemonSet в Kubernetes играет важную роль в обеспечении того, чтобы определённый под (Pod) запускался на каждом узле (Node) кластера (или на определённом подмножестве узлов, если заданы ограничения). Основные задачи и функции контроллера DaemonSet:
1. Запуск подов на каждом узле
- DaemonSet гарантирует, что на каждом узле кластера будет запущен экземпляр указанного пода.
- Это полезно для задач, которые должны выполняться на каждом узле, например:
- Сбор логов (например, Fluentd, Logstash).
- Мониторинг (например, Prometheus Node Exporter).
- Сетевые плагины (например, Calico, Weave).
- Хранение данных (например, распределённые хранилища).
2. Автоматическое добавление подов при добавлении новых узлов
- Когда в кластер добавляется новый узел, DaemonSet автоматически создаёт на нём под.
- Это обеспечивает согласованность и автоматизацию развёртывания.
3. Удаление подов при удалении узлов
- Если узел удаляется из кластера, DaemonSet автоматически удаляет под, связанный с этим узлом.
4. Поддержка селекторов и толерантностей
- DaemonSet позволяет использовать селекторы для выбора узлов, на которых будут запускаться поды.
- Также можно использовать толерантности (tolerations), чтобы разрешить запуск подов на узлах с определёнными метками (например, на узлах с taint
node-role.kubernetes.io/master).5. Обновление и управление подами
- DaemonSet поддерживает стратегии обновления (например, RollingUpdate или OnDelete), что позволяет обновлять поды на узлах с минимальным простоем.
- Контроллер следит за состоянием подов и обеспечивает их корректную работу.
Примеры использования DaemonSet:
- Сетевые плагины: Запуск сетевых агентов на каждом узле для обеспечения сетевой связности.
- Мониторинг: Запуск агентов сбора метрик (например, Prometheus Node Exporter) на каждом узле.
- Логирование: Запуск агентов сбора логов (например, Fluentd) на каждом узле.
- Хранение данных: Запуск компонентов распределённых хранилищ (например, Ceph, GlusterFS).
Отличие DaemonSet от других контроллеров:
- Deployment: Запускает определённое количество реплик подов, которые могут быть распределены по любым узлам.
- StatefulSet: Управляет подами с устойчивыми идентификаторами и хранилищем.
- DaemonSet: Запускает по одному поду на каждом узле (или на подмножестве узлов).
Таким образом, роль контроллера DaemonSet заключается в обеспечении запуска и поддержания определённого пода на каждом узле кластера, что делает его идеальным инструментом для задач, которые должны выполняться на всех узлах.
#devops #девопс
Подпишись 👉@i_DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Проектирование кластеров Kubernetes - выбор размера рабочих узлов
Каким должен быть кластер Kubernetes: с малым количеством мощных узлов или с множеством слабых? В этой статье разбираются плюсы и минусы обоих подходов.
При создании кластера Kubernetes один из первых вопросов, который у вас возникает: «Какой тип рабочих узлов (worker nodes) использовать и сколько их нужно?»
Если вы строите локальный (on-premises) кластер, стоит ли заказать несколько мощных серверов последнего поколения или использовать десяток-другой старых машин, пылящихся в вашем дата-центре?
Или, если вы используете управляемый сервис Kubernetes, например Google Kubernetes Engine (GKE), что лучше выбрать для достижения желаемой вычислительной мощности: восемь инстансов
https://learnkube.com/kubernetes-node-size
📲 Мы в MAX
#devops #девопс
Подпишись 👉@i_DevOps
Каким должен быть кластер Kubernetes: с малым количеством мощных узлов или с множеством слабых? В этой статье разбираются плюсы и минусы обоих подходов.
При создании кластера Kubernetes один из первых вопросов, который у вас возникает: «Какой тип рабочих узлов (worker nodes) использовать и сколько их нужно?»
Если вы строите локальный (on-premises) кластер, стоит ли заказать несколько мощных серверов последнего поколения или использовать десяток-другой старых машин, пылящихся в вашем дата-центре?
Или, если вы используете управляемый сервис Kubernetes, например Google Kubernetes Engine (GKE), что лучше выбрать для достижения желаемой вычислительной мощности: восемь инстансов
n1-standard-1 или два n1-standard-4?https://learnkube.com/kubernetes-node-size
#devops #девопс
Подпишись 👉@i_DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2