Warning: mkdir(): No space left on device in /var/www/tg-me/post.php on line 37

Warning: file_put_contents(aCache/aDaily/post/DevOPSitsec/--): Failed to open stream: No such file or directory in /var/www/tg-me/post.php on line 50
DevOps | Telegram Webview: DevOPSitsec/1475 -
Telegram Group & Telegram Channel
🏗️ Гайд: Эффективная оркестрация контейнеров с Docker в продакшн-среде

Ниже — подробное руководство для продвинутых пользователей, с примерами из реальной практики, кодом и комментариями.

1️⃣ Выбор инструмента оркестрации

Docker предоставляет базовые возможности, но для продакшн-оркестрации требуется полноценный движок:

Docker Swarm — встроенный, подходит для малых и средних проектов
Kubernetes (K8s) — промышленный стандарт, подходит для масштабных систем
Nomad (от HashiCorp) — легковесная альтернатива

👉 Для быстрого старта используй Swarm, для больших систем — Kubernetes.

2️⃣ Архитектура кластера

Рекомендуемый минимум:

• 3 manager-ноды (quorum, HA)
• 2+ worker-ноды
• overlay-сеть
• load balancer (например nginx, HAProxy)
• private registry (Harbor, GitLab Registry)

Инициализация кластера:


docker swarm init --advertise-addr MANAGER_IP
docker swarm join --token <join-token> MANAGER_IP:2377


Создание overlay-сети:


docker network create --driver overlay --attachable my-overlay


---

3️⃣ Развёртывание сервисов

Пример docker-compose.yml (версии 3 для Swarm):


version: '3.9'

services:
web:
image: mycompany/webapp:latest
replicas: 5
deploy:
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
networks:
- frontend
ports:
- "80:80"

networks:
frontend:
driver: overlay


Запуск:


docker stack deploy -c docker-compose.yml mystack


---

4️⃣ Zero-Downtime Updates

Добавь healthcheck в Dockerfile:


HEALTHCHECK --interval=30s --timeout=10s \
CMD curl -f http://localhost/health || exit 1


В docker-compose.yml уже используется update_config → обновления происходят без даунтайма (по 2 контейнера каждые 10s, с проверкой healthcheck).

---

5️⃣ Резервное копирование

Полезные команды:


docker swarm unlock-key
docker swarm join-token manager
docker node ls


Бэкап Raft:


docker container stop $(docker container ls -q --filter name=swarm)
cp -r /var/lib/docker/swarm ~/swarm-backup


6️⃣ Мониторинг и логирование

Prometheus + Grafana — метрики
ELK Stack / Loki — логи

Пример запуска cAdvisor:


docker run -d \
-p 9323:9323 \
--name cadvisor \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
google/cadvisor:latest


7️⃣ Безопасность

• Запуск от непривилегированного пользователя:


USER appuser


• Read-only root filesystem:


deploy:
read_only: true


• Ограничение capability:


deploy:
cap_drop:
- ALL


• Сканирование образов (Trivy):


trivy image mycompany/webapp:latest


• Не использовать latest тег:


image: mycompany/webapp:1.3.2


8️⃣ Оптимизация Dockerfile

multi-stage build
минимизируй слои
данные — во внешние volume

Пример multi-stage:


FROM node:18 AS build
WORKDIR /app
COPY . .
RUN npm install && npm run build

FROM nginx:alpine
COPY --from=build /app/build /usr/share/nginx/html


9️⃣ Управление секретами

Создание секрета:


echo "my-secret-value" | docker secret create db_password -


Использование в docker-compose.yml:


secrets:
- db_password


В контейнере доступно как /run/secrets/db_password.

🔟 CI/CD

Пример пайплайна (GitLab):


stages:
- build
- deploy

build:
stage: build
script:
- docker build -t registry.example.com/myapp:$CI_COMMIT_SHA .
- docker push registry.example.com/myapp:$CI_COMMIT_SHA

deploy:
stage: deploy
script:
- docker service update --image registry.example.com/myapp:$CI_COMMIT_SHA mystack_web


🎯 Заключение

Эффективная оркестрация =

грамотная архитектура
rolling updates + healthchecks
безопасность (secrets, cap_drop, read_only)
мониторинг и логирование
CI/CD интеграция
регулярный бэкап

👉 Swarm = быстрый старт, Kubernetes = масштабирование.



tg-me.com/DevOPSitsec/1475
Create:
Last Update:

🏗️ Гайд: Эффективная оркестрация контейнеров с Docker в продакшн-среде

Ниже — подробное руководство для продвинутых пользователей, с примерами из реальной практики, кодом и комментариями.

1️⃣ Выбор инструмента оркестрации

Docker предоставляет базовые возможности, но для продакшн-оркестрации требуется полноценный движок:

Docker Swarm — встроенный, подходит для малых и средних проектов
Kubernetes (K8s) — промышленный стандарт, подходит для масштабных систем
Nomad (от HashiCorp) — легковесная альтернатива

👉 Для быстрого старта используй Swarm, для больших систем — Kubernetes.

2️⃣ Архитектура кластера

Рекомендуемый минимум:

• 3 manager-ноды (quorum, HA)
• 2+ worker-ноды
• overlay-сеть
• load balancer (например nginx, HAProxy)
• private registry (Harbor, GitLab Registry)

Инициализация кластера:


docker swarm init --advertise-addr MANAGER_IP
docker swarm join --token <join-token> MANAGER_IP:2377


Создание overlay-сети:


docker network create --driver overlay --attachable my-overlay


---

3️⃣ Развёртывание сервисов

Пример docker-compose.yml (версии 3 для Swarm):


version: '3.9'

services:
web:
image: mycompany/webapp:latest
replicas: 5
deploy:
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
networks:
- frontend
ports:
- "80:80"

networks:
frontend:
driver: overlay


Запуск:


docker stack deploy -c docker-compose.yml mystack


---

4️⃣ Zero-Downtime Updates

Добавь healthcheck в Dockerfile:


HEALTHCHECK --interval=30s --timeout=10s \
CMD curl -f http://localhost/health || exit 1


В docker-compose.yml уже используется update_config → обновления происходят без даунтайма (по 2 контейнера каждые 10s, с проверкой healthcheck).

---

5️⃣ Резервное копирование

Полезные команды:


docker swarm unlock-key
docker swarm join-token manager
docker node ls


Бэкап Raft:


docker container stop $(docker container ls -q --filter name=swarm)
cp -r /var/lib/docker/swarm ~/swarm-backup


6️⃣ Мониторинг и логирование

Prometheus + Grafana — метрики
ELK Stack / Loki — логи

Пример запуска cAdvisor:


docker run -d \
-p 9323:9323 \
--name cadvisor \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
google/cadvisor:latest


7️⃣ Безопасность

• Запуск от непривилегированного пользователя:


USER appuser


• Read-only root filesystem:


deploy:
read_only: true


• Ограничение capability:


deploy:
cap_drop:
- ALL


• Сканирование образов (Trivy):


trivy image mycompany/webapp:latest


• Не использовать latest тег:


image: mycompany/webapp:1.3.2


8️⃣ Оптимизация Dockerfile

multi-stage build
минимизируй слои
данные — во внешние volume

Пример multi-stage:


FROM node:18 AS build
WORKDIR /app
COPY . .
RUN npm install && npm run build

FROM nginx:alpine
COPY --from=build /app/build /usr/share/nginx/html


9️⃣ Управление секретами

Создание секрета:


echo "my-secret-value" | docker secret create db_password -


Использование в docker-compose.yml:


secrets:
- db_password


В контейнере доступно как /run/secrets/db_password.

🔟 CI/CD

Пример пайплайна (GitLab):


stages:
- build
- deploy

build:
stage: build
script:
- docker build -t registry.example.com/myapp:$CI_COMMIT_SHA .
- docker push registry.example.com/myapp:$CI_COMMIT_SHA

deploy:
stage: deploy
script:
- docker service update --image registry.example.com/myapp:$CI_COMMIT_SHA mystack_web


🎯 Заключение

Эффективная оркестрация =

грамотная архитектура
rolling updates + healthchecks
безопасность (secrets, cap_drop, read_only)
мониторинг и логирование
CI/CD интеграция
регулярный бэкап

👉 Swarm = быстрый старт, Kubernetes = масштабирование.

BY DevOps


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/DevOPSitsec/1475

View MORE
Open in Telegram


DevOps Telegram | DID YOU KNOW?

Date: |

For some time, Mr. Durov and a few dozen staffers had no fixed headquarters, but rather traveled the world, setting up shop in one city after another, he told the Journal in 2016. The company now has its operational base in Dubai, though it says it doesn’t keep servers there.Mr. Durov maintains a yearslong friendship from his VK days with actor and tech investor Jared Leto, with whom he shares an ascetic lifestyle that eschews meat and alcohol.

Export WhatsApp stickers to Telegram on Android

From the Files app, scroll down to Internal storage, and tap on WhatsApp. Once you’re there, go to Media and then WhatsApp Stickers. Don’t be surprised if you find a large number of files in that folder—it holds your personal collection of stickers and every one you’ve ever received. Even the bad ones.Tap the three dots in the top right corner of your screen to Select all. If you want to trim the fat and grab only the best of the best, this is the perfect time to do so: choose the ones you want to export by long-pressing one file to activate selection mode, and then tapping on the rest. Once you’re done, hit the Share button (that “less than”-like symbol at the top of your screen). If you have a big collection—more than 500 stickers, for example—it’s possible that nothing will happen when you tap the Share button. Be patient—your phone’s just struggling with a heavy load.On the menu that pops from the bottom of the screen, choose Telegram, and then select the chat named Saved messages. This is a chat only you can see, and it will serve as your sticker bank. Unlike WhatsApp, Telegram doesn’t store your favorite stickers in a quick-access reservoir right beside the typing field, but you’ll be able to snatch them out of your Saved messages chat and forward them to any of your Telegram contacts. This also means you won’t have a quick way to save incoming stickers like you did on WhatsApp, so you’ll have to forward them from one chat to the other.

DevOps from us


Telegram DevOps
FROM USA