JavaRush /Курсы /Модуль 2: Fullstack /Работа с конфигурациями и секретами

Работа с конфигурациями и секретами

Модуль 2: Fullstack
16 уровень , 5 лекция
Открыта

6.1 Команда docker config

Docker предоставляет встроенные механизмы для управления конфигурациями и секретами, что позволяет безопасно и удобно управлять конфигурационными файлами и конфиденциальными данными в контейнерах. Эти механизмы помогают улучшить безопасность и упростить управление конфигурациями в распределенных системах. В этой лекции мы рассмотрим, как использовать команды docker config и docker secret, приведем примеры и лучшие практики.

Основы работы с конфигурациями

Команда docker config позволяет управлять конфигурационными файлами, которые могут быть использованы сервисами в Docker Swarm. Конфигурации обеспечивают удобный способ передачи настроек и параметров приложения.

Основные команды docker config

  1. docker config create — Создание новой конфигурации
  2. docker config ls — Список всех конфигураций
  3. docker config inspect — Получение информации о конфигурации
  4. docker config rm — Удаление конфигурации

Пример использования docker config

Создание конфигурации

Для создания конфигурации используется команда docker config create. В качестве примера создадим конфигурационный файл для Nginx.

Создайте файл nginx.conf:

nginx

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:

Terminal

docker config create nginx_config ./nginx.conf

2. Список всех конфигураций

Для просмотра всех созданных конфигураций используется команда docker config ls:

Terminal

docker config ls

Вывод команды:

Terminal

ID                                        NAME            CREATED            UPDATED
f8f8ff8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8   nginx_config    10 seconds ago     10 seconds ago

3. Использование конфигурации в сервисе

Создайте сервис, используя созданную конфигурацию:

Terminal

docker service create --name nginx --config source=nginx_config,target=/etc/nginx/nginx.conf -p 8080:80 nginx

4. Удаление конфигурации

Для удаления конфигурации используется команда docker config rm:

Terminal

docker config rm nginx_config

6.2 Команда docker secret

Команда docker secret позволяет управлять «секретами», такими как пароли, ключи API и сертификаты, которые могут быть безопасно использованы сервисами в Docker Swarm. Секреты хранятся в зашифрованном виде и доступны только тем сервисам, которые их используют.

Основные команды docker secret

  1. docker secret create — Создание нового секрета
  2. docker secret ls — Список всех секретов
  3. docker secret inspect — Получение информации о секрете
  4. docker secret rm — Удаление секрета

Пример использования docker secret

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

Для создания секрета используется команда docker secret create. В качестве примера создадим секрет для пароля базы данных.

Создайте файл db_password.txt:

Text

mysecretpassword

Создайте секрет в Docker:

Terminal

docker secret create db_password ./db_password.txt

2. Список всех секретов

Для просмотра всех созданных секретов используется команда docker secret ls:

Terminal

docker secret ls

Вывод команды:

Terminal

ID                                        NAME           CREATED            UPDATED
f8f8ff8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8   db_password    10 seconds ago     10 seconds ago

3. Использование секрета в сервисе

Создайте сервис, используя созданный секрет:

Terminal

docker service create --name postgres --secret db_password -e 
POSTGRES_PASSWORD_FILE=/run/secrets/db_password postgres

4. Удаление секрета

Для удаления секрета используется команда docker secret rm:

Terminal

docker secret rm db_password

6.3 Практические примеры и лучшие практики

Практические примеры и лучшие практики

Пример 1: Использование конфигураций и секретов в веб-приложении

Создание конфигурационного файла и секрета

Terminal

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

Создание сервисов, использующих конфигурации и секреты

Terminal

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:

nginx

user www-data;
worker_processes 4;

Создание новой версии конфигурации

Terminal

docker config create nginx_config_v2 ./nginx.conf

Обновление сервиса с новой конфигурацией

Terminal

docker service update --config-rm nginx_config --config-add 
source=nginx_config_v2,target=/etc/nginx/nginx.conf nginx
3
Задача
Модуль 2: Fullstack, 16 уровень, 5 лекция
Недоступна
Создание и использование конфигурации Nginx
Создание и использование конфигурации Nginx
3
Задача
Модуль 2: Fullstack, 16 уровень, 5 лекция
Недоступна
Создание секрета для базы данных
Создание секрета для базы данных
3
Задача
Модуль 2: Fullstack, 16 уровень, 5 лекция
Недоступна
Обновление конфигурации Nginx
Обновление конфигурации Nginx
3
Задача
Модуль 2: Fullstack, 16 уровень, 5 лекция
Недоступна
Удаление конфигурации и секрета
Удаление конфигурации и секрета
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Slevin Уровень 9
10 октября 2025
Ваш обосранный валидатор опять не принимает правильные решения, и начинает размышлять о смысле жизни, секретности данных и как я должен передавать пароль из другой галактики через защищенные каналы космической связи -- это уже достало просто. Конечно же, ваше решение - тоже не принимается. 😣😣😣 В последней задаче валидатор говно приняло ответ только с 9(!!!) попытки (без изменений в коде естественно)
Андрей Уровень 44
26 ноября 2025
c 14-ой!!!
Анастасия Уровень 47
25 декабря 2025
мне ещё повезло, у меня 6ть