Строим контейнерные образы как профи 😎
Множество ресурсов по созданию образов:
🔹 5 учебных пособий по композиции образов, выбору базового образа, многоступенчатым сборкам и образам без дистрибутива.
🔹 12 практических задач для создания и отладки образов.
Посмотреть здесь: https://labs.iximiuz.com/skill-paths/build-container-images
👉 DevOps Portal
Множество ресурсов по созданию образов:
Посмотреть здесь: https://labs.iximiuz.com/skill-paths/build-container-images
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥6❤1
Это репозиторий примеров из книги "Ansible for DevOps" Джеффа Гирлинга.
Он демонстрирует использование Ansible для автоматизации серверов и управления конфигурациями, с реальными примерами и плейбуками
👉 https://github.com/geerlingguy/ansible-for-devops
👉 DevOps Portal
Он демонстрирует использование Ansible для автоматизации серверов и управления конфигурациями, с реальными примерами и плейбуками
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - geerlingguy/ansible-for-devops: Ansible for DevOps examples.
Ansible for DevOps examples. Contribute to geerlingguy/ansible-for-devops development by creating an account on GitHub.
👍19
Хотите узнать, сколько дискового пространства занимают образы, контейнеры, локальные тома или кэш сборки?
Используйте команду:
docker system df
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥5❤1
Репозиторий с кучей полезных материалов и информации, связанных с DevOps
Содержит ресурсы по таким темам, как Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure и GC
👉 DevOps Portal
Содержит ресурсы по таким темам, как Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure и GC
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2
Структура манифеста развертывания Kubernetes: объяснение
В YAML-файле развертывания Kubernetes определяется, как приложение должно быть развернуто и управляться в кластере Kubernetes.
Ниже приведена структура YAML с пояснениями.
— Объяснение ключевых разделов
🔸 apiVersion & kind: Определяет, что этот ресурс является развертыванием и использует API Kubernetes
🔸 metadata: Содержит информацию, такую как имя и метки для организации приложения.
🔸 spec.replicas: Определяет желаемое количество работающих экземпляров (Pod'ов).
🔸 spec.selector.matchLabels: Гарантирует, что развертывание управляет только Pod'ами с соответствующими метками.
🔸 spec.template:
- Определяет шаблон Pod'а (его
- Раздел
- Можно также задать переменные среды, монтирование томов и лимиты ресурсов.
🔸 spec.strategy: Управляет стратегией обновления развертывания (
🔸 volumes: Позволяет определить постоянное хранилище, такое как
— Дополнительные параметры
🔸 Проверки работоспособности: Liveness & Readiness Probes
🔸 Управление размещением: Affinity & Node Selectors
🔸 Предварительная обработка: Init Containers
👉 DevOps Portal
В YAML-файле развертывания Kubernetes определяется, как приложение должно быть развернуто и управляться в кластере Kubernetes.
Ниже приведена структура YAML с пояснениями.
— Объяснение ключевых разделов
apps/v1.- Определяет шаблон Pod'а (его
metadata и spec).- Раздел
containers описывает контейнер, включая образ, порты и ресурсы.- Можно также задать переменные среды, монтирование томов и лимиты ресурсов.
RollingUpdate или Recreate).ConfigMaps, Secrets или Persistent Volumes.— Дополнительные параметры
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤1
Получите контекст вашего поиска с помощью grep, используя параметр -C:
$ grep -C3 filename
Это покажет 3 строки до и после найденного совпадения.
Очень помогает при анализе логов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22❤5
Docker решает проблему «у меня на машине работает»
Разработка и развертывание приложений сопряжены с рядом сложностей. Несогласованность программного обеспечения в разных средах приводит к серьезным проблемам: сбоям при развертывании, усложнению разработки и тестирования и другим неприятностям.
Docker решает проблему «у меня на машине работает» и упрощает развертывание приложений, инкапсулируя их вместе с зависимостями в стандартизированные, масштабируемые и изолированные контейнеры (контейнеризация).
В основе Docker лежит несколько ключевых компонентов.
Разбираясь в них, вы получите прочную базу понимания. Давайте разберем их!
Образы — это неизменяемые шаблоны, используемые для создания контейнеров. Они создаются с помощью инструкций в Dockerfile или загружаются из Docker-реестра, такого как Docker Hub.
Контейнер — это запущенный экземпляр образа. Это легковесный, автономный пакет, содержащий все необходимое для работы приложения.
Файл, содержащий последовательность команд для создания образа Docker.
Docker Engine отвечает за запуск и управление контейнерами. Он состоит из демона Docker и CLI-инструмента, взаимодействующего с ним через REST API.
Фоновый сервис, управляющий объектами Docker. Он обрабатывает API-запросы и управляет образами, контейнерами, сетями и томами хранения.
Репозитории для хранения и распространения образов Docker. Реестры могут быть публичными или частными. По умолчанию Docker использует публичный реестр Docker Hub.
Контейнеры работают в сетях, что позволяет им взаимодействовать друг с другом и с внешним миром. Сеть предоставляет коммуникационный шлюз между контейнерами на одном или разных хостах.
Тома позволяют сохранять данные вне контейнера и делиться ими между контейнерными инстансами, даже после удаления контейнера. Они обеспечивают независимость данных от жизненного цикла контейнера.
Все эти компоненты взаимосвязаны, создавая удобную систему для автоматизации развертывания, масштабирования и управления приложениями. Благодаря этому Docker стал мощным и важным инструментом в современной разработке программного обеспечения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥7❤2
Когда вы запускаете программу в терминале или по SSH, она завершится сразу после закрытия сессии терминала (когда вы выйдете из него) или при разрыве соединения.
Чтобы избежать этого и сохранить выполнение программы и всех её процессов, используйте команду
nohup (сокращение от no hangup – «без зависания»). Она игнорирует все сигналы разрыва соединения, позволяя процессу продолжать работу даже при закрытии терминала.Например, чтобы сжать большой объем данных с помощью команды
tar и гарантировать, что процесс не прервётся при случайном закрытии терминального окна, выполните команду:$ nohup tar -cf archive.tar file1 file2
Также
nohup создаёт файл nohup.out, в который записывает вывод команды:$ cat nohup.out
Альтернативно, можно использовать
tmux, disown или screen.Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤6🔥1🤔1
Вы можете использовать ловушку DEBUG, чтобы шаг за шагом проходить через bash-скрипт, давая вам возможность проверять каждую строку перед её выполнением — это идеально для отладки!
— Вот как это работает:
Команда trap с параметром DEBUG срабатывает сразу перед выполнением каждой строки, приостанавливая выполнение, чтобы вы могли решить, хотите ли продолжить. Это как интерактивное «пошаговое выполнение» вашего bash-скрипта.
В отличие от sh -x, который выводит каждую строку без остановки, этот метод позволяет вам контролировать выполнение каждой команды перед её запуском.
Ловушка DEBUG не является настоящим сигналом, а представляет собой специальную функцию (псевдосигнал), которая срабатывает перед каждой строкой скрипта, что удобно для понимания поведения скрипта построчно.
Вы также можете изучить похожие псевдосигналы, такие как EXIT, который выполняет команды перед завершением скрипта; RETURN, который срабатывает при возврате из функции или после того, как скрипт был загружен (с помощью source или .); и ERR, который обрабатывает команды, возвращающие ненулевой код завершения при активированном set -e.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥4❤1
Как работает преобразование сетевых адресов (NAT)
Преобразование сетевых адресов (NAT) — это фундаментальная технология в современных сетях, которая позволяет устройствам в частной сети обмениваться данными с внешними сетями, такими как Интернет, используя один публичный IP-адрес. Эта возможность критически важна для экономии ограниченных ресурсов IPv4-адресов и повышения безопасности сети. Рассмотрим, как работает NAT на основе приведенной инфографики.
— Основы NAT
NAT работает, изменяя информацию о IP-адресах в пакетах, когда они проходят через маршрутизатор или брандмауэр. Конкретно, он преобразует частные IP-адреса в локальной сети в публичный IP-адрес для связи с внешними сетями.
— Компоненты и процесс
1. Частная сеть и публичный IP:
🔹 Устройства в частной сети получают частные IP-адреса (например,
🔹 Маршрутизатор, выполняющий NAT, имеет частный IP-адрес (например,
2. Преобразование пакетов:
🔹 Когда устройство (например,
🔹 Маршрутизатор с включенным NAT перехватывает этот пакет. Прежде чем отправить его в назначение, маршрутизатор заменяет частный IP-адрес (
3. Поддержание сеансов:
🔹 Маршрутизатор поддерживает таблицу NAT для отслеживания активных сеансов. Эта таблица содержит соответствия между внутренними частными IP-адресами и портами и внешними публичными IP-адресами и портами.
🔹 Например, таблица NAT может отображать соответствие
4. Обратное преобразование пакетов:
🔹 Когда внешний сервер (
🔹 NAT-маршрутизатор перехватывает эти входящие пакеты, обращается к таблице NAT и преобразует адрес назначения обратно в частный IP-адрес (
— Преимущества NAT
🔹 Сохранение IP-адресов: NAT позволяет нескольким устройствам в локальной сети использовать один публичный IP-адрес, что значительно уменьшает количество требуемых IP-адресов.
🔹 Безопасность: NAT скрывает внутренние IP-адреса сети, обеспечивая дополнительный уровень безопасности, предотвращая прямой доступ к внутренним устройствам из внешней сети.
— Заключение
NAT — это важная технология, которая помогает эффективно использовать IP-адреса и повышать безопасность сети. Преобразуя частные IP-адреса в публичные и управляя этими соответствиями, NAT обеспечивает бесперебойную связь между частными сетями и Интернетом. Эта функциональность незаменима в условиях ограниченных ресурсов IP-адресов и повышенных требований к безопасности.
👉 DevOps Portal
Преобразование сетевых адресов (NAT) — это фундаментальная технология в современных сетях, которая позволяет устройствам в частной сети обмениваться данными с внешними сетями, такими как Интернет, используя один публичный IP-адрес. Эта возможность критически важна для экономии ограниченных ресурсов IPv4-адресов и повышения безопасности сети. Рассмотрим, как работает NAT на основе приведенной инфографики.
— Основы NAT
NAT работает, изменяя информацию о IP-адресах в пакетах, когда они проходят через маршрутизатор или брандмауэр. Конкретно, он преобразует частные IP-адреса в локальной сети в публичный IP-адрес для связи с внешними сетями.
— Компоненты и процесс
1. Частная сеть и публичный IP:
192.168.3.6, 192.168.3.7, 192.168.3.8).192.168.3.0/24) на своем внутреннем интерфейсе и публичный IP-адрес (например, 200.100.10.1) на внешнем интерфейсе, предоставленный поставщиком Интернет-услуг (ISP).2. Преобразование пакетов:
192.168.3.6) хочет общаться с внешним сервером (например, 65.44.21.24) через Интернет, оно отправляет пакет с своим частным IP-адресом в качестве источника.192.168.3.6:5733) на свой публичный IP-адрес (200.100.10.1:5733). Этот процесс позволяет пакету пройти через Интернет, поскольку он не маршрутизирует частные IP-адреса.3. Поддержание сеансов:
192.168.3.6:5733 -> 200.100.10.1:5733, что позволяет маршрутизатору корректно перенаправлять ответы обратно на исходное устройство в частной сети.4. Обратное преобразование пакетов:
65.44.21.24) отвечает, он отправляет пакеты на публичный IP-адрес (200.100.10.1:5733).192.168.3.6:5733), прежде чем отправить его соответствующему внутреннему устройству.— Преимущества NAT
— Заключение
NAT — это важная технология, которая помогает эффективно использовать IP-адреса и повышать безопасность сети. Преобразуя частные IP-адреса в публичные и управляя этими соответствиями, NAT обеспечивает бесперебойную связь между частными сетями и Интернетом. Эта функциональность незаменима в условиях ограниченных ресурсов IP-адресов и повышенных требований к безопасности.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Многие либо не знают об этом, либо редко используют.
Нажатие
Ctrl+U в терминале Linux удаляет все от позиции курсора до начала строки.Аналогично,
Ctrl+K удаляет все от позиции курсора до конца строки.Это особенно полезно, если вы неправильно ввели пароль. Вместо того чтобы долго удерживать клавишу backspace, просто нажмите
Ctrl+U, чтобы очистить ввод и ввести пароль заново.Эти сочетания клавиш имеют множество других практических применений
Please open Telegram to view this post
VIEW IN TELEGRAM
👍49🔥10
Что такое параметризованные пайплайны в Jenkins?
— Динамичные и переиспользуемые пайплайны
Параметризованные пайплайны в Jenkins позволяют передавать пользовательские входные данные при запуске билда, делая конвейеры более гибкими и универсальными. Это позволяет использовать один и тот же пайплайн для разных сценариев без необходимости значительных изменений в коде.
— Применение:
🔹 Конфигурация сборок: Запуск сборок для разных окружений (dev, staging, production), веток или версий приложения.
🔹 Тестирование: Выполнение тестов на разных браузерах, операционных системах и конфигурациях.
🔹 Деплой: Развертывание приложения в различные среды с индивидуальными настройками.
🔹 Кастомные workflow: Возможность задавать параметры вручную для специфических задач.
— Создание параметризованного пайплайна
1. Определение параметров: В Jenkins Pipeline (в декларативном или скриптовом синтаксисе) используется директива
2. Использование параметров: Обращение к значениям, введенным пользователем, через объект params в шагах пайплайна:
3. Запуск сборок: При старте параметризованного пайплайна в UI Jenkins появится форма для ввода параметров.
— Типы параметров в Jenkins:
🔹 String: Текстовый ввод.
🔹 Choice: Выпадающий список значений.
🔹 Boolean: Флаг (true/false).
🔹 File: Загрузка файла.
🔹 Password: Скрытый ввод для конфиденциальных данных.
🔹 И другие. (Полный список доступен в документации Jenkins.)
— Преимущества параметризованных пайплайнов:
🔹 Гибкость: Управление процессами без изменения кода пайплайна.
🔹 Переиспользуемость: Один пайплайн можно применять для разных задач.
🔹 Удобство: Позволяет даже нетехническим пользователям запускать билды с нужными параметрами.
🔹 Оптимизация CI/CD: Упрощает процессы непрерывной интеграции и доставки (CI/CD).
— Дополнительные замечания:
🔹 Можно задавать параметры по умолчанию.
🔹 В истории билдов отображаются введенные параметры для каждого запуска.
🔹 Для управления параметризованными пайплайнами можно использовать Jenkins Shared Libraries.
👉 DevOps Portal
— Динамичные и переиспользуемые пайплайны
Параметризованные пайплайны в Jenkins позволяют передавать пользовательские входные данные при запуске билда, делая конвейеры более гибкими и универсальными. Это позволяет использовать один и тот же пайплайн для разных сценариев без необходимости значительных изменений в коде.
— Применение:
— Создание параметризованного пайплайна
1. Определение параметров: В Jenkins Pipeline (в декларативном или скриптовом синтаксисе) используется директива
parameters для объявления доступных параметров:pipeline {
parameters {
string(name: 'ENVIRONMENT', defaultValue: 'dev', description: 'Целевое окружение для деплоя (dev, staging, prod)')
choice(name: 'BUILD_TYPE', choices: ['Release', 'Debug'], description: 'Тип сборки')
}
}2. Использование параметров: Обращение к значениям, введенным пользователем, через объект params в шагах пайплайна:
stages {
stage('Build') {
steps {
echo "Сборка для окружения: ${params.ENVIRONMENT}"
echo "Тип сборки: ${params.BUILD_TYPE}"
}
}
}3. Запуск сборок: При старте параметризованного пайплайна в UI Jenkins появится форма для ввода параметров.
— Типы параметров в Jenkins:
— Преимущества параметризованных пайплайнов:
— Дополнительные замечания:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Управление современными распределенными приложениями — это сложная задача. Обеспечение надежности, масштабируемости и отказоустойчивости систем требует использования сложных инструментов оркестрации.
И здесь на помощь приходит Kubernetes.
Kubernetes (K8s) упрощает развертывание, масштабирование и управление контейнеризованными приложениями, становясь основой современной практики DevOps.
В своей основе Kubernetes строится на нескольких ключевых компонентах, каждый из которых выполняет свою роль.
Понимание этих компонентов даст вам крепкую базу знаний — давайте погрузимся
Состав управляющей плоскости:
• API сервер: обрабатывает запросы на управление кластером
• Scheduler (Планировщик): назначает Pods на узлы
• Controller manager (Менеджер контроллеров): поддерживает желаемое состояние системы
• etcd: хранит конфигурацию кластера и его состояние в виде распределенного хранилища ключ-значение
Все эти компоненты работают вместе, создавая мощную систему для автоматизации оркестрации приложений. Kubernetes стал основой для обеспечения надежности и масштабируемости в современных программных системах.
Однако это не решение для каждого приложения. Есть крутой кривой обучения и высокая сложность. В некоторых случаях более простые или легковесные решения, такие как Docker Swarm или PaaS-платформы, могут быть более подходящими
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍6❤4
В Linux оператор конвейера (|) полезен, когда нужно направить вывод одной команды на вход другой для дальнейшей обработки:
$ cat data.txt | grep "No such file"
Однако это не перенаправляет ошибки. Если файл не существует, команда
grep не даст результата.Что если нужно перенаправить и обработать как ошибки, так и обычный вывод?
Здесь на помощь приходит оператор перенаправления
|&.Этот оператор направляет как стандартный вывод (stdout), так и стандартные ошибки (stderr) первой команды через конвейер на стандартный ввод (stdin) второй команды. Посмотрите на следующий пример:
$ cat data.txt |& grep "No such file"
Обратите внимание на разницу: команда
grep смогла найти совпадение.Оператор
|& в bash является сокращением для оператора перенаправления 2>&1 |:$ cmd-1 2>&1 | cmd-2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤5
Контейнеры Docker изначально задумывались как эфемерные, то есть их файловая система не сохраняется после остановки или удаления контейнера. Docker Volumes (тома) обеспечивают механизм хранения и обмена данными, который выходит за пределы жизненного цикла контейнера, предотвращая потерю данных. Это особенно важно для приложений, которым требуется постоянное хранилище, таких как базы данных, CMS или stateful-сервисы.
— Типы томов Docker
Существует три основных типа томов в Docker:
Это наиболее распространенный и удобный тип. Они управляются самим Docker и хранятся в файловой системе хоста в специальном каталоге (
/var/lib/docker/volumes/ на Linux). Именованные тома подходят для хранения данных, требующих сохранности (например, базы данных) и легко поддаются резервному копированию или миграции.Анонимные тома, как и именованные, управляются Docker, но не имеют явного имени. Они используются для временных данных, которые не нужно сохранять между пересозданиями или перезапусками контейнера. Их сложнее отслеживать, и они автоматически удаляются, когда контейнер, их использующий, уничтожается.
В отличие от обычных томов, привязанные тома позволяют монтировать конкретный каталог или файл с хостовой системы в контейнер. Этот метод предоставляет больше контроля над местоположением и правами доступа к данным. Изменения, внесенные в файлы на хосте, сразу отображаются в контейнере и наоборот. Bind mounts удобны для совместного использования конфигурационных файлов или исходного кода в процессе разработки.
— Создание и монтирование именованных томов
Создать именованный том можно командой:
docker volume create jenkins_home
Если имя не указано, Docker сгенерирует его автоматически.
Для запуска контейнера с монтированным томом используйте флаг -v:
docker run -d --name jenkins -p 8080:8080 -v jenkins_home:/var/data jenkins/jenkins
В этом примере том
jenkins_home монтируется в контейнер по пути /var/data.По умолчанию тома монтируются с правами чтения-записи. Чтобы примонтировать том в режиме "только для чтения", используйте
:ro:docker run -d --name jenkins -p 8080:8080 -v jenkins_home:/var/data:ro jenkins/jenkins
— Создание и монтирование анонимных томов
Анонимный том создается автоматически при запуске контейнера с
-v, но без указания источника:docker run -d -v /data nginx
— Создание и монтирование привязанных томов
Привязанные тома используют файловую систему хоста, а не Docker. Чтобы создать bind mount, необходимо заранее создать нужный каталог или файл на хосте.
Для монтирования каталога используйте флаг
-v:docker run -d -p 80:80 -v $(pwd):/data nginx
Или более явный
--mount:docker run -d -p 80:80 --mount type=bind,source=$(pwd),target=/data nginx
Теперь любые файлы, созданные в
/data внутри контейнера, появятся в текущем каталоге на хосте.Важно: следите за правами доступа, чтобы избежать проблем с доступом к файлам.
— Просмотр и управление томами Docker
docker volume ls
docker volume inspect jenkins_home
Удаление конкретного тома:
docker volume rm jenkins_home
Удаление всех неиспользуемых томов:
docker volume prune
Анонимные тома и привязанные тома обычно удаляются вместе с контейнером.
— Практическое применение Docker Volumes
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤2
— Лучшие практики использования томов Docker
🔹 Используйте именованные тома для важных данных.
🔹 Регулярно очищайте неиспользуемые тома, чтобы не занимать дисковое пространство.
🔹 Будьте осторожны с привязанными томами, так как они дают контейнеру доступ к файловой системе хоста.
🔹 Используйте плагины для томов для расширенных возможностей, таких как шифрование и снапшоты.
✅ Заключение
Docker Volumes — это мощный инструмент для управления данными в контейнерах. Их грамотное использование значительно упрощает развертывание, разработку и администрирование контейнеризированных приложений.
👉 DevOps Portal
Docker Volumes — это мощный инструмент для управления данными в контейнерах. Их грамотное использование значительно упрощает развертывание, разработку и администрирование контейнеризированных приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Быстрый совет по Linux 🐧
Вы можете использовать опцию
Это особенно полезно, когда нужно выполнить одно и то же действие над несколькими файлами, расположенными в разных местах.
Приведённая команда выводит информацию о правах доступа и других метаданных для каждого найденного файла.
Разбор опции
🔹
🔹
🔹
🔹
Также вместо
Можно выполнять несколько команд с помощью
👉 DevOps Portal
Вы можете использовать опцию
-exec команды find, чтобы вызвать внешнюю программу для выполнения определённого действия над найденными файлами, соответствующими заданным критериям. Например, удаление файлов, вывод прав доступа и т. д.$ find ~/ -type f -exec ls -lah {} \;Это особенно полезно, когда нужно выполнить одно и то же действие над несколькими файлами, расположенными в разных местах.
Приведённая команда выводит информацию о правах доступа и других метаданных для каждого найденного файла.
Разбор опции
-exec:exec ls — указывает find выполнить команду ls для каждого найденного файла.-lah — отображает все файлы (включая скрытые), их права доступа и другие метаданные (например, размер) в удобочитаемом формате.{} — это специальный placeholder, заменяемый именем каждого найденного файла. Он всегда должен быть последним в списке параметров.; — указывает конец списка параметров. Его необходимо экранировать (\;), иначе shell интерпретирует его неправильно.Также вместо
; можно использовать +, что позволяет передавать сразу несколько файлов в одну команду. Между + и {} должен быть пробел.Можно выполнять несколько команд с помощью
-exec. Например, следующая команда считает количество слов в текстовых файлах и их занимаемое место на диске:$ find . -name "*.txt" -exec wc {} \; -exec du -sh {} \;Please open Telegram to view this post
VIEW IN TELEGRAM
👍24❤1
Docker Daemon (Демон Docker)
Демон Docker — это серверная составляющая Docker, которая работает в фоновом режиме для управления образами Docker, контейнерами, сетями и томами.
Он играет ключевую роль в архитектуре Docker, слушая запросы API от клиента Docker и выполняя запрашиваемые операции.
—Ниже приведены основные функции демона Docker:
1. Управление образами
🔹 Управляет Docker-образами, которые используются как шаблоны для создания контейнеров.
🔹 Загружает образы из реестра Docker (например, Docker Hub) и сохраняет их локально на хосте Docker.
🔹 Управляет жизненным циклом и хранением этих образов.
2. Управление контейнерами
🔹 Отвечает за запуск, остановку и управление контейнерами Docker.
🔹 Создает новый контейнер из образа при выполнении команды
🔹 Останавливает и удаляет контейнеры в ответ на команды
3. Сетевое управление
🔹 Управляет сетями Docker, которые соединяют контейнеры друг с другом и с внешними системами.
🔹 Поддерживает различные сетевые драйверы (например, bridge, host, overlay, macvlan) для обработки различных сетевых требований и сценариев.
4. Управление томами
🔹 Управляет томами Docker для сохранения данных, генерируемых контейнерами.
🔹 Позволяет подключать тома к контейнерам во время их работы, что позволяет сохранять и обмениваться данными между контейнерами.
5. API
🔹 Предоставляет REST API для программного взаимодействия с Docker.
🔹 Клиент Docker использует этот API для отправки команд (например, создание контейнеров или управление образами) демону.
— Как работает демон Docker
🔹 Фоновый процесс: работает непрерывно в фоновом режиме на хосте Docker.
🔹 Взаимодействие: прослушивает запросы API от клиента Docker через Unix-сокет или сетевой порт.
🔹 Настройка: может быть настроен с помощью различных параметров, таких как драйверы хранения, сетевые драйверы и параметры логирования, для разных вариантов использования.
Демон Docker является основным компонентом архитектуры Docker, обеспечивая удобное управление контейнерами, образами и сетями, а также обеспечивая гибкость и масштабируемость для контейнеризованных приложений.
👉 DevOps Portal
Демон Docker — это серверная составляющая Docker, которая работает в фоновом режиме для управления образами Docker, контейнерами, сетями и томами.
Он играет ключевую роль в архитектуре Docker, слушая запросы API от клиента Docker и выполняя запрашиваемые операции.
—Ниже приведены основные функции демона Docker:
1. Управление образами
2. Управление контейнерами
docker run.docker stop и docker rm.3. Сетевое управление
4. Управление томами
5. API
— Как работает демон Docker
Демон Docker является основным компонентом архитектуры Docker, обеспечивая удобное управление контейнерами, образами и сетями, а также обеспечивая гибкость и масштабируемость для контейнеризованных приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤3
Команда
diff — полезный инструмент для поиска различий между файлами в терминале Linux. Однако, icdiff предлагает еще более удобное сравнение, выводя файлы бок о бок с цветным отображением изменений.$ icdiff config-1 config-2
Результат выведет оба файла рядом, с выделением различий красным и зеленым цветами, что позволяет легко увидеть различия.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍6❤2
Git stash позволяет временно сохранить черновик ваших изменений, которые еще не были зафиксированы (committed), и вернуть рабочую директорию в чистое состояние. Это полезно, если вам нужно переключиться на другую задачу, но вы не хотите коммитить незавершенную работу.
— Как работает Git Stash?
Когда вы выполняете команду
git stash, Git берет все незакоммиченные изменения из вашей рабочей директории и сохраняет их в специальном хранилище (stash) — по сути, это стек отложенных изменений. После этого все незакоммиченные изменения удаляются из рабочей копии, и она снова соответствует последнему коммиту (HEAD).Сохраненные изменения остаются в отдельном месте, пока вы не будете готовы снова применить их. Это позволяет переключаться между ветками, получать обновления из удаленного репозитория, выполнять rebase и другие операции, не мешая текущей незавершенной работе.
— Рабочий процесс с Git Stash
Перед тем как зафиксировать изменения в stash, сначала добавьте файлы в индекс, чтобы Git начал их отслеживать:
$ git add .
Если нужно сохранить только определенные файлы, укажите их при добавлении:
$ git add file.txt demo.txt
Затем создайте новый stash:
```bash
$ git stash
Эта команда сохранит ваши изменения и вернет рабочую директорию в состояние последнего коммита.
Чтобы дать stash понятное название, используйте параметр -m:
git stash -m "<имя>"
Это поможет вам легче идентифицировать нужные сохраненные изменения позже.
Чтобы увидеть список всех сохраненных stash'ей, используйте:
$ git stash list
Для просмотра краткого описания stash'а выполните:
```bash
git stash show
Где
<stash> — это идентификатор stash'а из списка git stash list.Когда вы готовы вернуть сохраненные изменения, используйте команду git stash pop:
git stash pop
Эта команда применяет изменения и удаляет stash из списка. Если вы хотите сохранить stash после применения, используйте:
git stash apply
Чтобы применить stash, кроме последнего, используйте:
git stash apply <stash>
Или:
git stash pop --index <stash>
Где
<stash> — идентификатор stash'а из git stash list. apply сохраняет stash, а pop удаляет его после применения.Вы можете создать новую ветку и применить к ней изменения из stash'а:
git stash branch <branch-name> <stash>
Эта команда создаст новую ветку с изменениями из stash'а, привязанными к коммиту, в котором stash был создан.
Когда stash больше не нужен, удалите его командой:
git stash drop <stash>
Это удаляет один stash. Чтобы удалить все stash'и, используйте:
git stash clear
После очистки stash'и невозможно будет восстановить.
Git stash поддерживает множество дополнительных опций, включая возможность отправки stash'ей в удаленный репозиторий. Подробнее читайте в официальной документации.
— Когда использовать Git Stash?
Git stash полезен в следующих ситуациях:
С помощью stash можно легко менять контексты работы без необходимости делать временные коммиты.
— Заключение
Git stash позволяет откладывать локальные изменения без коммитов, помогая гибко управлять рабочим процессом и переключаться между ветками. Это делает его важным инструментом для эффективной работы с Git.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥6❤2
Получайте уведомления, когда ваши команды в терминале завершаются!
$ sudo apt update; notify-send "Обновление завершено" "Получение обновлений завершено"
Замените
apt update на любую команду, выполнение которой займет некоторое время. Не забудьте сначала установить inotify-tools:$ sudo apt install inotify-tools
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍4❤3