6.1 Команда docker config
Docker предоставляет встроенные механизмы для управления конфигурациями и секретами, что позволяет безопасно и удобно управлять конфигурационными файлами и конфиденциальными данными в контейнерах. Эти механизмы помогают улучшить безопасность и упростить управление конфигурациями в распределенных системах. В этой лекции мы рассмотрим, как использовать команды docker config и docker secret, приведем примеры и лучшие практики.
Основы работы с конфигурациями
Команда docker config позволяет управлять конфигурационными файлами, которые могут быть использованы сервисами в Docker Swarm. Конфигурации обеспечивают удобный способ передачи настроек и параметров приложения.
Основные команды docker config
docker config create— Создание новой конфигурацииdocker config ls— Список всех конфигураций-
docker config inspect— Получение информации о конфигурации docker config rm— Удаление конфигурации
Пример использования docker config
Создание конфигурации
Для создания конфигурации используется команда docker config create. В качестве примера создадим конфигурационный файл для Nginx.
Создайте файл nginx.conf:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
}
http {
server {
listen 80;
location / {
return 200 'Hello, World!';
add_header Content-Type text/plain;
}
}
}
Создайте конфигурацию в Docker:
docker config create nginx_config ./nginx.conf
2. Список всех конфигураций
Для просмотра всех созданных конфигураций используется команда docker config ls:
docker config ls
Вывод команды:
ID NAME CREATED UPDATED
f8f8ff8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 nginx_config 10 seconds ago 10 seconds ago
3. Использование конфигурации в сервисе
Создайте сервис, используя созданную конфигурацию:
docker service create --name nginx --config source=nginx_config,target=/etc/nginx/nginx.conf -p 8080:80 nginx
4. Удаление конфигурации
Для удаления конфигурации используется команда docker config rm:
docker config rm nginx_config
6.2 Команда docker secret
Команда docker secret позволяет управлять «секретами», такими как пароли, ключи API и сертификаты, которые могут быть безопасно использованы сервисами в Docker Swarm. Секреты хранятся в зашифрованном виде и доступны только тем сервисам, которые их используют.
Основные команды docker secret
docker secret create— Создание нового секретаdocker secret ls— Список всех секретовdocker secret inspect— Получение информации о секретеdocker secret rm— Удаление секрета
Пример использования docker secret
1. Создание секрета
Для создания секрета используется команда docker secret create. В качестве примера создадим секрет для пароля базы данных.
Создайте файл db_password.txt:
mysecretpassword
Создайте секрет в Docker:
docker secret create db_password ./db_password.txt
2. Список всех секретов
Для просмотра всех созданных секретов используется команда docker secret ls:
docker secret ls
Вывод команды:
ID NAME CREATED UPDATED
f8f8ff8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 db_password 10 seconds ago 10 seconds ago
3. Использование секрета в сервисе
Создайте сервис, используя созданный секрет:
docker service create --name postgres --secret db_password -e
POSTGRES_PASSWORD_FILE=/run/secrets/db_password postgres
4. Удаление секрета
Для удаления секрета используется команда docker secret rm:
docker secret rm db_password
6.3 Практические примеры и лучшие практики
Практические примеры и лучшие практики
Пример 1: Использование конфигураций и секретов в веб-приложении
Создание конфигурационного файла и секрета
echo "user www-data;" > ./nginx.conf
echo "worker_processes auto;" >> ./nginx.conf
docker config create nginx_config ./nginx.conf
echo "mysecretpassword" > ./db_password.txt
docker secret create db_password ./db_password.txt
Создание сервисов, использующих конфигурации и секреты
docker service create --name nginx --config source=nginx_config,target=/etc/nginx/nginx.conf -p
8080:80 nginx
docker service create --name postgres --secret db_password -e
POSTGRES_PASSWORD_FILE=/run/secrets/db_password postgres
Пример 2: Обновление конфигурации
Обновление содержимого конфигурационного файла
Измените файл nginx.conf:
user www-data;
worker_processes 4;
Создание новой версии конфигурации
docker config create nginx_config_v2 ./nginx.conf
Обновление сервиса с новой конфигурацией
docker service update --config-rm nginx_config --config-add
source=nginx_config_v2,target=/etc/nginx/nginx.conf nginx
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
валидаторговно приняло ответ только с 9(!!!) попытки (без изменений в коде естественно)