DevOps Star (Звезда Девопса)
前往频道在 Telegram
Devops, Linux, SRE, Kubernetes, Сисадмин, Девопс, Python, JS, Java, Git, IT канал, программирование, безопасность, ИТ, Sysadmin По всем вопросам @evgenycarter
显示更多2 148
订阅者
无数据24 小时
-17 天
+1030 天
帖子存档
Как настроить Docker, чтобы он переподнимался при ошибках и перезапуске хоста
Настройка политики перезапуска 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Основы Docker. Большой практический выпуск
0:00:00 Вступление
0:02:22 Что такое Docker?
0:16:29 Простой пример Hello World
0:31:34 Пример WEB приложения
0:35:55 Работаем с портами
0:41:10 Что такое docker volume
0:46:54 Поднимаем временную базу данных
0:55:26 Разворачиваем реальный проект
1:00:35 Что такое docker-compose
1:05:23 Создаем виртуальную машину (подробно)
1:08:25 Ставим Docker и Docker compose на Linux
1:10:17 Delpoy проекта с ипользованием GitHub
1:16:50 Delpoy проекта с ипользованием DockerHub
источник
👉 @devops_star
DevOps Engineering курс для начинающих
16:22 -TDD
20:33 - CI
24:44 - CI Setup
34:44 - Code Coverage
46:55 - Linting
57:33 - Ephemeral Environments
1:10:55 - VM vs Container
1:23:22 - Rolling Deployments
1:28:33 - Blue Green Deployments
1:45:33 - Auto Scaling
1:58:44 - Service Discovery
2:02:22 - Log Aggregation
2:11:11 - Vital Production Metrics
👉 @devops_star
Контейнеры и Mikrotik, чем еще можно нагрузить ваш девайс
Расширение возможностей в приборах латвийского производителя сетевого оборудования практически не знает границ, но и сейчас их смогли широко раздвинуть при помощи введения дополнительного функционала - контейнеров. Во время доклада пообщаемся о том, как это все работает и как нам могут быть полезны контейнеры.
Обсудим подводные и надводные камни.
источник
👉 @devops_star
Кто такой DevOps-инженер // Что должен уметь, какие задачи, сколько платят
Кто такой этот ваш DevOps-инженер? Чем он занимается, какие задачи? Что должен уметь девопс-инженер? Какие бывают Девопс-инженеры? За что им столько платят, а главное — сколько платят? Всё это я разбираю в видео.
⏱️ Таймкоды:
0:00 Вступление
1:00 Цикл разработки по DevOps
2:14 Какие бывают DevOps-инженеры
2:37 И швец, и жнец
4:40 Делаешь что-то одно
6:25 Общие плюсы и минусы профессии
8:15 Программисты и ChatGPT забирают работу
10:00 Задачи DevOps-инженера
11:30 Формы развития навыков, I, T-shaped
12:34 Софт-скиллы DevOps-инженера
13:25 Хард-скиллы DevOps-инженера
15:12 Кто становится DevOps-инженером
15:56 За что нам платят деньги
17:00 Смотрим вакансии и анализ зарплат
источник
👉 @devops_star
Шпаргалка docker
Best Practice
🟢Следуй принципу минимальных привилегий, процессы в контейнере никогда не должны выполняться из под рута, кроме редких случаев, нужно добавлять команду user и менять юзера на non-root.
🟢Не привязываться к UID, он динамичен, можно записать во временную папку UID.
🟢Сделать все исполняемые файлы владельцем рута, чтобы никто не изменил исполняемые файлы, а пользователю достаточно только права на выполнение.
🟢Чем меньше компонентов и открытых портов, тем меньше поверхность для атак.
🟢Использовать multistage для промежуточного контейнера для компиляции всего, зависимостей, временных файлов, образ может весить на треть меньше.
🟢Distroless с чистого листа, использовать минимальный набор пакетов, например избавиться от образа Ubuntuи выбрать Debian-base, наши контейнеры содержат уязвимости изначального образа, чекать это.
🟢Нужно обновлять всё до того, как выйдет из под поддержки.
🟢Оставлять только те порты, которые реально нужны, избегать 22 и 21 3389 (ssh & ftp & rdp).
🟢Никогда не помещайте логины/пароли в команде, в докерфайлах, переменных, docker secret или любой другой менеджер секретов ok.
🟢Не использовать ADD, только COPY (когда используем точку - это воркдир где лежит докерфайл).
🟢При сборке используйте .dockerignore чтобы убрать сенситив дату, это как .gitignore.
🟢При сборке вначале команд лучше кешировать команду ран, а потом скопировать исходные данные.
🟢Метадату записать.
🟢Использовать тесты типа Linter и сканеры образов для CI.
🟢Время от времени делать prune, докер любит много места жрать
👉 @devops_star
Шпаргалка docker
Install DOCKER
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Info and Registry
docker info - Информация обо всём в установленном Docker
docker history - История образа
docker tag - Дать тег образу локально или в registry
docker login - Залогиниться в registry
docker search - Поиск образа в registry
docker pull - Загрузить образ из Registry себе на хост
docker push - Отправить локальный образ в registry
Container Management
docker ps -а - Посмотреть все контейнеры
docker start container-name - Запустить контейнер
docker kill/stop container-name - Убить (SIGKILL) /Остановить (SIGTERM) контейнер
docker logs --tail 100 container-name - Вывести логи контейнера, последние 100 строк
docker inspect container-name - Вся инфа о контейнере + IP
docker rm container-name - Удалить контейнер (поле каждой сборки Dockerfile)
docker rm -f $(docker ps -aq) - Удалить все запущенные и остановленные контейнеры
docker events container-name
docker port container-name - Показать публичный порт контейнера
docker top container-name - Отобразить процессы в контейнере
docker stats container-name - Статистика использования ресурсов в контейнере
docker diff container-name - Изменения в ФС контейнера
Images
docker build -t my_app . - Билд контейнера в текущей папке, Скачивает все слои для запуска образа
docker images / docker image ls - Показать все образы в системе
docker image rm / docker rmi image - Удалить image
docker commit <containerName/ID> lepkov/debian11slim:version3- Создает образ из контейнера
docker insert URL - вставляет файл из URL в контейнер
docker save -o backup.tar - Сохранить образ в backup.tar в STDOUT с тегами, версиями, слоями
docker load - Загрузить образ в .tar в STDIN с тегами, версиями, слоями
docker import - Создать образ из .tar
docker image history --no-trunc - Посмотреть историю слоёв образа
docker system prune -f - Удалит все, кроме используемого (лучше не использовать на проде, ещё кстати из-за старого кеша может собираться cтарая версия контейнера)
Run
docker run -d -p 80:80 -p 22:22 debian:11.1-slim sleep infinity (--rm удалит после закрытия контейнера, --restart unless-stopped добавит автозапуск контейнера) - Запуск контейнера интерактивно или как демона/detached (-d), Порты: слева хостовая система, справа в контейнере, пробрасывается сразу 2 порта 80 и 22, используется легкий образ Debian 11 и команда бесконечный сон
docker update --restart unless-stopped redis - добавит к контейнеру правило перезапускаться при закрытии, за исключением команды стоп, автозапуск по-сути
docker exec -it container-name /bin/bash (ash для alpine) - Интерактивно подключиться к контейнеру для управления, exit чтобы выйти
docker attach container-name - Подключиться к контейнеру чтоб мониторить ошибки логи в реалтайме
👉 @devops_star
Kubernetes Tutorial for Beginners [FULL COURSE in 4 Hours]
0:00 - Course Overview
2:18 - What is K8s
5:20 - Main K8s Components
22:29 - K8s Architecture
34:47 - Minikube and kubectl - Local Setup
44:52 - Main Kubectl Commands - K8s CLI
1:02:03 - K8s YAML Configuration File
1:16:16 - Demo Project: MongoDB and MongoExpress
1:46:16 - Organizing your components with K8s Namespaces
2:01:52 - K8s Ingress explained
2:24:17 - Helm - Package Manager
2:38:07 - Persisting Data in K8s with Volumes
2:58:38 - Deploying Stateful Apps with StatefulSet
3:13:43 - K8s Services explained
👉 @devops_star
jless — CLI-просмотрщик JSON с подсветкой синтаксиса 🔧
https://jless.io/
👉 @devops_star
Ansible На Русском Языке
1 - Автоконфигурирование для DevOps - Полный Курс на Простом Языке
2 - Установка на Ubuntu и CentOS
3 - Установка на Amazon Linux через PIP
4 - Подключение к серверам LINUX
5 - Подключение к серверам WINDOWS
6 - Правила создания файла Inventory
7 - Запуск Ad-Hoc Комманд
8 - Правила Формата YAML
9 - Перенос переменных в group_vars
10 - Первые Playbook
👉 @devops_star
Топ-10 опций команды docker run
Консольная команда
docker run имеет около сотни опций, в том числе -d, -i, -t, -v и -w. В данной статье рассмотрим десять наиболее популярных опций, с которыми наверняка придется работать. Давайте разберемся!
Пример команды с опциями, которые будут рассмотрены в данной статье:
docker run \
--rm \
--detach \
--env KEY=VALUE \
--ip 10.10.9.75 \
--publish 3000:3000 \
--volume my_volume \
--name my_container \
--tty --interactive \
--volume /my_volume \
--workdir /app \
IMAGE bash
Начнем с азов. Консольная команда docker run создает из docker-образа контейнер (точнее создает доступный для записи слой поверх слоев, содержащихся в docker-образе) и запускает его (выполняет указанную команду). В общем виде это выглядит так:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Команда docker run очень похожа на комбинацию команд docker create ... и docker start ..., подробнее о которых можно узнать в официальной документации.
Топ-10 опций команды docker run в алфавитном порядке.
--detach, -d - по умолчанию, docker-контейнер запускается присоединенным (attached) к стандартным потокам ввода-вывода. Параметр -d, --detach позволяет запускать контейнер в фоне и не выводить на экран содержимое потоков ввода-вывода.
--entrypoint - устанавливает или переопределяет используемую по умолчанию команду (и параметры) из docker-образа. Подробнее о Docker ENTRYPOINT можно узнать здесь.
--env, -e - устанавливает переменные окружения в формате пар КЛЮЧ=ЗНАЧЕНИЕ. Если у вас есть список переменных окружения в файле, тогда необходимо использовать опцию --env-file.
--ip - назначает docker-контейнеру IP-адрес, например, --ip=10.10.9.75.
--name - назначает docker-контейнеру имя (--name my-super-container).
--publish, -p или --publish-all, -P - сопоставляет порт(ы) docker-контейнера порту(ам) на хост системе. Стоит отметить, что --publish-all откроет доступ к портам, описанным в Dockerfile с помощью директивы EXPOSE.
--rm - автоматически удалить контейнер после завершения его работы (в том числе, при завершении с ошибкой).
--tty, -t - назначает псевдо-TTY, подключенный к STDIN контейнера. Зачастую используется с опцией --interactive, -i - например, если вам нужно подключиться к оболочке (bash) внутри docker-контейнера для выполнения каких-то действий.
--volume, -v - монтирование тома. Подробнее о томах можно почитать здесь.
--workdir, -w - устанавливает рабочую директорию внутри docker-контейнера. Например, если вы скопировали некие файлы в папку app контейнера, то вполне разумно будет установить этот каталог в качестве рабочей директории.
👉 @devops_starЧто такое CI/CD? // Зачем и как работает
Что такое CI/CD: простое объяснение для новичков про Continuous Integration, Continuous Delivery/Deployment. Они же - непрерывная интеграция и непрерывная доставка или развертывание. Что там за магия происходит под капотом, зачем это вообще придумали и какие цели преследуются?
Расскажу про то, какие есть процессы внутри, как и где это запускается без привязки к конкретным инструментам вроде Gitlab и Jenkins. Про артефакты, Nexus, тест-гейты, агенты и раннеры.
источник
👉 @devops_star
Выводим список установленных пакетов в Linux по дате
Порой необходимо узнать когда тот или иной пакет был установлен в операционной системе (например, в целях аудита). В данной статье рассмотрим как вывести список установленных пакетов в Linux, отсортированный по дате установки - давайте разберемся!
https://telegra.ph/Vyvodim-spisok-ustanovlennyh-paketov-v-Linux-po-date-09-10
👉 @devops_star
Как стать DevOps Инженером с Нуля, что учить и в каком порядке
00:00 – 1. Вступление
01:06 – 2. Всевозможные компетенции DevOps инженера
10:35 – 3. Кому проще стать DevOps
15:01 – 4. Что учить по минимуму и в каком порядке
30:04 – 4.1. Основы Network TCP/IP
31:36 – 4.2. Администрирование Windows
34:09 – 4.3. Основы Linux
35:54 – 4.4. Ansible
36:48 – 4.5. Git
37:37 – 4.6. GitHub
38:04 – 4.7. Jenkins
38:23 – 4.8. Docker+DockerHub
38:44 – 4.9. Cloud Platform AWS
42:10 – 4.10. CloudFormation + Terraform
43:25 – 5. Курс DevOps Engineering в JohnBryce, Израиль
49:12 – 6. Как стать профессиональным DevOps инженером
54:24 – 7. Эпилог
👉 @devops_star
Murex - bash-подобная среда оболочки и сценариев с расширенными возможностями, разработанными для обеспечения безопасности и производительности (например, более интеллектуальный инструментарий DevOps).
https://github.com/lmorg/murex
👉 @devops_star
Практика DevOps: разворачиваем простое приложение на AWS
Илия Карин демонстрирует развертывание простого приложения с не самой простой архитектурой на Amazon Web Services. Проходится весь процесс, который присущ вполне реальному проекту.
00:00 Знакомство с Илией Кариным. План действий.
01:56 Запускаем создание инфраструктуры на Amazon Web Services (AWS).
03:30 Переходим к Terraform - инструмента для описания инфраструктуры кодом.
04:37 Что такое Docker и Docker-Compose? Их сравнение.
08:53 Рассмотрение нашего стендового приложения (калькулятор Фибоначчи).
11:11 Архитектура приложения.
12:14 Локальное демо приложения.
16:28 Сверяем проделанное по шагам. Повторный запуск Terraform для исправления проблем.
19:38 Что такое Continuous Integration и Continuous Delivery (CI/CD)? Работа с Travis CI. Разнообразие CD-сервисов.
24:12 Окончание развертывания архитектуры на AWS.
28:31 Еще про CI/CD. Командная работа и пайплайн CI/CD.
29:42 Инфраструктура развернута на AWS. Вносим изменение и пушим его в Git. Подхват изменений Travis'ом и их развертывание.
36:34 Смотрим на наше приложение на AWS. Делаем еще изменение.
38:10 Проверяем инфраструктуру. Опасность снятия немалой суммы денег, если не обратить внимание!
40:23 Смотрим на результат последнего коммита. Тест успешно развернутого приложения.
👉 @devops_star
Стать DevOps-инженером в 2023 году: [Практическая дорожная карта]
В этом подробном руководстве я расскажу о практической дорожной карте становления DevOps-инженера, основанной на моем 10-летнем опыте работы в качестве DevOps-инженера в различных организациях.
На современном ИТ-рынке сфера DevOps является одним из лучших вариантов для повышения заработной платы и карьерного роста ИТ-специалистов. Один из часто задаваемых мне вопросов: "Как стать инженером DevOps?".
Многие утверждают (в том числе и я), что нет ничего похожего на "DevOps-инженера" или "DevOps-команду", потому что этого понятия не существует. Однако все в отрасли уже привыкли к термину "инженер DevOps", и если вы понимаете философию DevOps, то эти названия не имеют большого значения.
Ближе к концу статьи я добавил различные команды, в которые может входить инженер DevOps.
https://devopscube.com/become-devops-engineer#devops-engineer-roadmap
#devops #девопс
👉 @devops_star
Зачем нужен и как работает Docker?
Чтобы научиться работать с докером, важно понимать принципы его работы. В этом видео вы разберете зачем вообще нужен Docker, почему он стал популярным, а также в чем его сила и слабые стороны.
#devops #Docker
👉 @devops_star
Куда уходит время? Боремся за миллисекунды в Kubernetes
Меня зовут Вова, я разрабатываю observability-платформу в Ozon. Как-то раз в наш уголок на 42 этаже заглянули коллеги — и поделились наблюдением. Если открыть рядом графики времён запросов и ответов двух живущих в Kubernetes и общающихся между собой микросервисов, то иногда можно наблюдать большую разницу в высоких квантилях: клиент считает, что один ответ из сотни ему приходит за сто миллисекунд, сервер же говорит, что успевает ответить за десять.
Куда ушло время? Можно ли его вернуть? Сегодня расскажу о том, с какими граблями может столкнуться микросервис, живущий в типичной инсталляции Kubernetes.
https://habr.com/ru/companies/ozontech/articles/662758/
#devops #Kubernetes
👉 @devops_star
Что должен знать DevOps инженер junior?
Как стать DevOps инженером? Какими минимальными навыками для этого нужно обладать? На эти вопросы автор отвечает в данном видео. Вы узнаете о фундаменте знаний для DevOps инженера.
#devops
👉 @devops_star
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
