Как настроить Docker, чтобы он переподнимался при ошибках и перезапуске хоста
Настройка политики перезапуска Docker контейнеров
Для начала стоит добавить параметр --restart=always к команде запуска Docker:
Политика перезапуска Docker-контейнера устанавливается параметром --restart – именно он указывает как поступать с контейнером, который завершил свою работу / упал с ошибкой / при старте системы. Возможные варианты:
- no – не перезапускать docker-контейнер;
- on-failure – рестартануть контейнер, в случае если entry point процесс завершился с ненулевым кодом;
- always – перезапускать всегда, вне зависимости от того, что случилось с docker-контейнером.
Также можно установить максимальное количество попыток перезапустить контейнер при использовании политики перезапуска on-failure. По умолчанию Docker будет постоянно пытаться перезапустить.
А здесь Docker попытается только 10 раз:
Если контейнер поднимется хотя бы и завершится с нулевым кодом возврата, то счётчик начнётся с начала. Работает это только с политикой on-failure.
👉 @devops_star
Настройка политики перезапуска Docker контейнеров
Для начала стоит добавить параметр --restart=always к команде запуска Docker:
docker run --restart=always -d {{ name }}
Политика перезапуска Docker-контейнера устанавливается параметром --restart – именно он указывает как поступать с контейнером, который завершил свою работу / упал с ошибкой / при старте системы. Возможные варианты:
- no – не перезапускать docker-контейнер;
- on-failure – рестартануть контейнер, в случае если entry point процесс завершился с ненулевым кодом;
- always – перезапускать всегда, вне зависимости от того, что случилось с docker-контейнером.
Также можно установить максимальное количество попыток перезапустить контейнер при использовании политики перезапуска on-failure. По умолчанию Docker будет постоянно пытаться перезапустить.
docker run --restart=always {{ name }}
А здесь Docker попытается только 10 раз:
docker run --restart=on-failure:10 {{ name }}
Если контейнер поднимется хотя бы и завершится с нулевым кодом возврата, то счётчик начнётся с начала. Работает это только с политикой on-failure.
👉 @devops_star
👍7
Основные команды Docker
Рассмотрим систему управления контейнерами под названием Docker. Ознакомимся с базовыми принципами ее работы, а также подробно рассмотрим основные команды, необходимые для управления Docker и ее составляющими.
https://telegra.ph/Osnovnye-komandy-Docker-09-24
👉 @devops_star
Рассмотрим систему управления контейнерами под названием Docker. Ознакомимся с базовыми принципами ее работы, а также подробно рассмотрим основные команды, необходимые для управления Docker и ее составляющими.
https://telegra.ph/Osnovnye-komandy-Docker-09-24
👉 @devops_star
👍3👎1🤬1
DevOps_Culture_and_Practice_with_OpenShift_Deliver_continuous_business.pdf
124.2 MB
DevOps Culture and Practice With OpenShift
Mike Hepburn, Time Beatie, Noel OConnor, Donal Spring (2021)
Have you ever wondered what the secret is to a successful DevOps transformation? What is it made up of? Where do you start? If only someone made the recipe and the ingredients available, perhaps everyone could try it out in their kitchens. We are part of the Red Hat Open Innovation Labs and Services teams, and it is in our DNA to share with you what we have learned in our kitchens and with our customers while taking these journeys to be more successful at DevOps
👉 @devops_star
Mike Hepburn, Time Beatie, Noel OConnor, Donal Spring (2021)
Have you ever wondered what the secret is to a successful DevOps transformation? What is it made up of? Where do you start? If only someone made the recipe and the ingredients available, perhaps everyone could try it out in their kitchens. We are part of the Red Hat Open Innovation Labs and Services teams, and it is in our DNA to share with you what we have learned in our kitchens and with our customers while taking these journeys to be more successful at DevOps
👉 @devops_star
🔥3👍1😐1
Как определить DNS в контейнерах Docker
Когда вы развертываете контейнер в сети, если он не может найти DNS-сервер, определенный в файле /etc/resolv.conf, по умолчанию он будет использовать DNS, настроенный для хоста.
Это может быть хорошо и удобно для определенных ситуаций.
Но что если (возможно, по соображениям безопасности) вы не хотите, чтобы ваши контейнеры использовали тот же DNS, что и хосты.
https://telegra.ph/Kak-opredelit-DNS-v-kontejnerah-Docker-09-26
👉 @devops_star
Когда вы развертываете контейнер в сети, если он не может найти DNS-сервер, определенный в файле /etc/resolv.conf, по умолчанию он будет использовать DNS, настроенный для хоста.
Это может быть хорошо и удобно для определенных ситуаций.
Но что если (возможно, по соображениям безопасности) вы не хотите, чтобы ваши контейнеры использовали тот же DNS, что и хосты.
https://telegra.ph/Kak-opredelit-DNS-v-kontejnerah-Docker-09-26
👉 @devops_star
👍4
Jeffery_D_Smith_Operations_Anti_Patterns,_DevOps_Solutions_Manning.pdf
6.3 MB
Operations Anti-Patterns, DevOps Solutions
Автор: Jeffery D. Smith (2020)
В своей книге автор показывает, как реализовывать методологию DevOps в несовершенных средах, в которых работают большинство разработчиков. Отчасти учебник по технологиям, отчасти справочное руководство и отчасти справочник по психологии - эта книга показывает реалистичные способы внедрения DevOps в вашу команду, когда у вас нет гибкости для радикальных изменений в организационной структуре.
👉 @devops_star
Автор: Jeffery D. Smith (2020)
В своей книге автор показывает, как реализовывать методологию DevOps в несовершенных средах, в которых работают большинство разработчиков. Отчасти учебник по технологиям, отчасти справочное руководство и отчасти справочник по психологии - эта книга показывает реалистичные способы внедрения DevOps в вашу команду, когда у вас нет гибкости для радикальных изменений в организационной структуре.
👉 @devops_star
👍4
3 довольно неизвестных команды Docker, которые помогут вам в самых различных ситуациях
Если вы какое-то время используете Docker, у вас, вероятно, уже есть адаптированный для вас простой и эффективный рабочий процесс, который включает в себя некоторые из ваших любимых команд Docker (если это технически правильные подкоманды).
https://telegra.ph/3-dovolno-neizvestnyh-komandy-Docker-kotorye-pomogut-vam-v-samyh-razlichnyh-situaciyah-09-26
👉 @devops_star
Если вы какое-то время используете Docker, у вас, вероятно, уже есть адаптированный для вас простой и эффективный рабочий процесс, который включает в себя некоторые из ваших любимых команд Docker (если это технически правильные подкоманды).
https://telegra.ph/3-dovolno-neizvestnyh-komandy-Docker-kotorye-pomogut-vam-v-samyh-razlichnyh-situaciyah-09-26
👉 @devops_star
👍5🫡1
Naml - это инструмент управления конфигурацией для описания конфигурации Kubernetes в Go. Имеет хороший инструмент для преобразования YAML в Go.
Особенности
- Создавайте приложения с помощью 🎉 Go вместо YAML.
- Используйте компилятор Go для проверки синтаксиса.
- Пишите реальные тесты 🤓 на Go для проверки и валидации ваших развертываний.
- Тестируйте свои приложения в Kubernetes с использованием kind.
- Определяйте пользовательскую логику установки. Что произойдет, если она не сработает? А что насчет логических проблем во время выполнения?
- Определяйте пользовательские реестры приложений. Множество приложений одного типа? Нет проблем.
- Используйте последний клиент (тот же клиент, который использует остальная часть Kubernetes).
https://github.com/kris-nova/naml
👉 @devops_star
Особенности
- Создавайте приложения с помощью 🎉 Go вместо YAML.
- Используйте компилятор Go для проверки синтаксиса.
- Пишите реальные тесты 🤓 на Go для проверки и валидации ваших развертываний.
- Тестируйте свои приложения в Kubernetes с использованием kind.
- Определяйте пользовательскую логику установки. Что произойдет, если она не сработает? А что насчет логических проблем во время выполнения?
- Определяйте пользовательские реестры приложений. Множество приложений одного типа? Нет проблем.
- Используйте последний клиент (тот же клиент, который использует остальная часть Kubernetes).
https://github.com/kris-nova/naml
👉 @devops_star
👍3
Как подключиться к контейнеру Docker по ssh
После того, как у вас появился контейнер Docker, работающий в системе Linux, одна из вещей, которые вам, вероятно, потребуется сделать, – это запустить команды внутри контейнера.
https://telegra.ph/Kak-podklyuchitsya-k-kontejneru-Docker-po-ssh-09-26
👉 @devops_star
После того, как у вас появился контейнер Docker, работающий в системе Linux, одна из вещей, которые вам, вероятно, потребуется сделать, – это запустить команды внутри контейнера.
https://telegra.ph/Kak-podklyuchitsya-k-kontejneru-Docker-po-ssh-09-26
👉 @devops_star
👍8🤨3
Вопросы на собеседований
Напишите простой демон для systemd, который будет поддерживать работу процесса и перезапускаться в случае выхода из строя процесса.
👉 @devops_star
Напишите простой демон для systemd, который будет поддерживать работу процесса и перезапускаться в случае выхода из строя процесса.
[Unit]
Description=Test_service
After=postgres.service
StartLimitBurst=5
StartLimitIntervalSec=10
[Service]
Type=simple
Restart=always
RestartSec=1
User=centos
ExecStart=/usr/bin/env python /app/server.py
[Install]
WantedBy=multi-user.target
👉 @devops_star
👍5
Nigel Poulton - The Kubernetes Book.pdf
5.7 MB
The Kubernetes Book
Автор: Nigel Poulton (2020)
Kubernetes - это популярная технология для управления и развёртывания контейнеризированных приложений, в
основном используется в связке с другой популярной технологией - Docker. Это руководство предназначено для опытных разработчиков, уже использовавших Docker и работающих с высоконагруженными приложениями. В книге множество примеров, советов и рецептов по решению сложных ситуаций.
В книге рассматриваются следующие темы:
✔️Установка Kubernetes;
✔️Основные принципы работы и использования;
✔️Работа с контейнерами;
✔️Сервисы;
✔️Деплой приложения с помощью Kubernetes и многое другое.
👉 @devops_star
Автор: Nigel Poulton (2020)
Kubernetes - это популярная технология для управления и развёртывания контейнеризированных приложений, в
основном используется в связке с другой популярной технологией - Docker. Это руководство предназначено для опытных разработчиков, уже использовавших Docker и работающих с высоконагруженными приложениями. В книге множество примеров, советов и рецептов по решению сложных ситуаций.
В книге рассматриваются следующие темы:
✔️Установка Kubernetes;
✔️Основные принципы работы и использования;
✔️Работа с контейнерами;
✔️Сервисы;
✔️Деплой приложения с помощью Kubernetes и многое другое.
👉 @devops_star
👍3
Полное руководство по Docker Secrets
Даже если вы использовали Docker для небольших или локально разработанных программ, вы могли обнаружить, что он может быть довольно трудным для решения более сложных задач. Особенно это касается управления секретами и совместного использования - областей, которые часто упускаются из виду при работе с контейнерными приложениями.
https://earthly.dev/blog/docker-secrets/
👉 @devops_star
Даже если вы использовали Docker для небольших или локально разработанных программ, вы могли обнаружить, что он может быть довольно трудным для решения более сложных задач. Особенно это касается управления секретами и совместного использования - областей, которые часто упускаются из виду при работе с контейнерными приложениями.
https://earthly.dev/blog/docker-secrets/
👉 @devops_star
👍3
Вопросы на собеседований
Сетевое взаимодействие в Kubernetes
С помощью чего можно ограничить в Kubernetes сетевое взаимодействие между подами? Приведите пример. Надо ли отдельно включать данный механизм?
👉 @devops_star
Сетевое взаимодействие в Kubernetes
С помощью чего можно ограничить в Kubernetes сетевое взаимодействие между подами? Приведите пример. Надо ли отдельно включать данный механизм?
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: demo-network-policy
namespace: default
spec:
podSelector:
matchLabels:
role: db
policyTypes:
- Ingress
- Egress
ingress:
- from:
- ipBlock:
cidr: 172.16.0.0/16
except:
- 172.16.1.0/24
- namespaceSelector:
matchLabels:
project: demo
- podSelector:
matchLabels:
role: frontend
ports:
- protocol: TCP
port: 8080
egress:
- to:
- ipBlock:
cidr: 10.0.0.0/24
ports:
- protocol: TCP
port: 5432
👉 @devops_star
👍4
DevOps resources
Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP
https://github.com/bregman-arie/devops-resources
👉 @devops_star
Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP
https://github.com/bregman-arie/devops-resources
👉 @devops_star
👍7
Вопросы на собеседований
Стратегии деплоймента
Сделайте реализацию blue/green стратегии деплоймента для Kubernetes на основе деплойментов, сервиса и ingress’а и опишите как переключать версии.
Стратегии деплоймента
Сделайте реализацию blue/green стратегии деплоймента для Kubernetes на основе деплойментов, сервиса и ingress’а и опишите как переключать версии.
### Конфигурация ingress'а
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: / spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: app-service
port:
number: 80
### Сервис
apiVersion: v1
kind: Service
metadata:
name: app-service
spec:
selector:
app: app
color: blue
ports:
- protocol: TCP
port: 80
targetPort: 8080
### Деплоймент синей версии
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-blue
labels:
app: app
color: blue
spec:
replicas: 1
selector:
matchLabels:
app: app
color: blue
template:
metadata:
labels:
app: app
color: blue
spec:
containers:
- name: app
image: docker.registry.io/app:1.0.0
ports:
- containerPort: 8080
### Деплоймент зелёной версии
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-green
labels:
app: app
color: green
spec:
replicas: 1
selector:
matchLabels:
app: app
color: green
template:
metadata:
labels:
app: app
color: green
spec:
containers:
- name: app
image: docker.registry.io/app:1.0.0
ports:
- containerPort: 8080
### Переключение версий осуществляется путём изменения селекторов в сервисе
👉 @devops_star👍1
Kubernetes Security Training Platform - Focussing on security mitigation
Симулятор распределенных систем и инфраструктуры для атак и отладки Kubernetes: симулятор создает для вас кластер Kubernetes в вашем аккаунте AWS; запускает сценарии, которые неправильно конфигурируют его и/или делают уязвимым для компрометации, и обучает вас способам устранения этих уязвимостей.
https://github.com/kubernetes-simulator/simulator
👉 @devops_star
Симулятор распределенных систем и инфраструктуры для атак и отладки Kubernetes: симулятор создает для вас кластер Kubernetes в вашем аккаунте AWS; запускает сценарии, которые неправильно конфигурируют его и/или делают уязвимым для компрометации, и обучает вас способам устранения этих уязвимостей.
https://github.com/kubernetes-simulator/simulator
👉 @devops_star
👍2
Media is too big
VIEW IN TELEGRAM
Обучающий курс «Docker для начинающих» (
0:00 - Вступление и обзор курса
01:58 - Что такое Docker?
10:56 - Что такое контейнер?
19:40 - Docker против виртуальной машины
23:53 - Установка Docker
42:02 - Основные команды Docker
57:15 - Отладка контейнера
1:06:39 - Обзор демонстрационного проекта - Docker на практике
1:10:08 - Разработка с использованием контейнеров
1:29:49 - Docker Compose - запуск нескольких сервисов
1:42:02 - Dockerfile - создание собственного образа Docker
2:04:36 - Частный репозиторий Docker - загрузка нашего созданного образа Docker в частный реестр на AWS
2:19:06 - Развертывание нашего контейнерного приложения
2:27:26 - Docker Volumes - сохранение данных в Docker
2:33:03 - Демонстрация Volumes - настройка персистентности для нашего демонстрационного проекта
2:45:13 - Завершение
👉 @devops_star
язык Eng
)0:00 - Вступление и обзор курса
01:58 - Что такое Docker?
10:56 - Что такое контейнер?
19:40 - Docker против виртуальной машины
23:53 - Установка Docker
42:02 - Основные команды Docker
57:15 - Отладка контейнера
1:06:39 - Обзор демонстрационного проекта - Docker на практике
1:10:08 - Разработка с использованием контейнеров
1:29:49 - Docker Compose - запуск нескольких сервисов
1:42:02 - Dockerfile - создание собственного образа Docker
2:04:36 - Частный репозиторий Docker - загрузка нашего созданного образа Docker в частный реестр на AWS
2:19:06 - Развертывание нашего контейнерного приложения
2:27:26 - Docker Volumes - сохранение данных в Docker
2:33:03 - Демонстрация Volumes - настройка персистентности для нашего демонстрационного проекта
2:45:13 - Завершение
👉 @devops_star
👍6