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: |

A Telegram spokesman declined to comment on the bond issue or the amount of the debt the company has due. The spokesman said Telegram’s equipment and bandwidth costs are growing because it has consistently posted more than 40% year-to-year growth in users.

How To Find Channels On Telegram?

There are multiple ways you can search for Telegram channels. One of the methods is really logical and you should all know it by now. We’re talking about using Telegram’s native search option. Make sure to download Telegram from the official website or update it to the latest version, using this link. Once you’ve installed Telegram, you can simply open the app and use the search bar. Tap on the magnifier icon and search for a channel that might interest you (e.g. Marvel comics). Even though this is the easiest method for searching Telegram channels, it isn’t the best one. This method is limited because it shows you only a couple of results per search.

DevOps from kr


Telegram DevOps
FROM USA