Secret и Config в Docker Swarm
Как использовать Docker Secret и Docker Config
Docker Secret и Docker Config — это инструменты для управления конфиденциальными данными (паролями, ключами) и конфигурационными файлами в Docker Swarm. Они обеспечивают безопасность и удобство при работе с распределенными приложениями.
Docker Secret
Что такое Docker Secret?
- Предназначены для хранения чувствительных данных (пароли, TLS-сертификаты, токены).
- Данные шифруются при передаче и хранении.
- Доступны только внутри сервисов Swarm.
Как использовать?
1. Создание Secret
Из файла:
echo "my_db_password" | docker secret create db_password -
Через командную строку:
docker secret create db_password_v2 -
# Введите значение в интерактивном режиме
2. Подключение Secret к сервису
docker service create \
--name mysql \
--secret source=db_password,target=db_password \
-e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_password \
mysql:latest
3. Использование Secret внутри контейнера
cat /run/secrets/db_password
Команды для работы с Secrets
Команда | Описание |
---|---|
docker secret create |
Создать секрет |
docker secret ls |
Список секретов |
docker secret inspect |
Информация о секрете |
docker secret rm |
Удалить секрет |
Docker Config
Что такое Docker Config?
- Для неконфиденциальных конфигурационных файлов (настройки приложений, JSON-файлы).
- Данные не шифруются.
- Удобно для управления версиями конфигов.
Как использовать?
1. Создание Config
docker config create nginx_conf /path/to/nginx.conf
2. Подключение Config к сервису
docker service create \
--name web \
--config source=nginx_conf,target=/etc/nginx/nginx.conf \
-p 80:80 \
nginx:latest
3. Обновление Config
docker config create nginx_conf_v2 /path/to/new-nginx.conf
docker service update \
--config-rm nginx_conf \
--config-add source=nginx_conf_v2,target=/etc/nginx/nginx.conf \
web
Команды для работы с Configs
Команда | Описание |
---|---|
docker config create |
Создать конфиг |
docker config ls |
Список конфигов |
docker config inspect |
Информация о конфиге |
docker config rm |
Удалить конфиг |
Пример использования Secret и Config вместе
# Создаем секрет и конфиг
echo "admin123" | docker secret create admin_pass -
docker config create app_settings ./settings.json
# Запускаем сервис
docker service create \
--name myapp \
--secret admin_pass \
--config source=app_settings,target=/app/config.json \
myapp_image:latest
Лучшие практики
- Не храните секреты в образах: Используйте
--secret
вместо ENV. - Ограничьте доступ: Только Manager-узлы могут управлять секретами и конфигами.
- Используйте версионирование: Создавайте новые версии с суффиксами (_v1, _v2).
- Документируйте зависимости: Указывайте, какие секреты и конфиги требуются.
Docker Compose (для Stacks)
Пример docker-compose.yml
:
version: "3.8"
services:
web:
image: nginx:latest
configs:
- source: nginx_conf
target: /etc/nginx/nginx.conf
secrets:
- source: db_password
target: db_password
configs:
nginx_conf:
file: ./nginx.conf
secrets:
db_password:
file: ./db_password.txt
Запуск:
docker stack deploy -c docker-compose.yml myapp
Заключение
Docker Secret и Docker Config упрощают управление данными в распределенных приложениях. Secret защищают чувствительную информацию, а Config помогают централизованно управлять настройками. Используйте их, чтобы сделать ваши сервисы безопаснее и удобнее в поддержке.
Официальная документация: