===== Управляйте конфиденциальными данными с помощью секретов Docker=====
В терминах служб Docker Swarm секрет— это блок данных, например пароль, закрытый ключ SSH, сертификат SSL или другой элемент данных, который не следует передавать по сети или хранить в незашифрованном виде в файле Docker или в исходный код вашего приложения. Вы можете использовать Docker secrets для централизованного управления этими данными и безопасной передачи их только тем контейнерам, которым необходим доступ к ним. Секреты шифруются во время передачи и при хранении в файле Docker swarm. Данный секрет доступен только тем службам, которым был предоставлен явный доступ к нему, и только во время выполнения данных служебных задач.
Вы можете использовать секреты для управления любыми конфиденциальными данными, которые нужны контейнеру во время выполнения, но вы не хотите хранить их в образе или в системе управления версиями, например:
* Имена пользователей и пароли
* TLS-сертификаты и ключи
* SSH-ключи
* Другие важные данные, такие как имя базы данных или внутреннего сервера
* Общие строки или двоичное содержимое (размером до 500 КБ)
==== пример====
Команда docker secret create считывает стандартный ввод, последний аргумент это файл, из которого нужно считать секрет.
vagrant@server1:~$ nano sec.txt
vagrant@server1:~$ docker secret create my_pass sec.txt
lr087ew95yv8qps71c0lsvef0
или
vagrant@server1:~$ echo '123456' | docker secret create my_pass -
rbx59q8tq3fnkzkt8gf1bewc6
Создаем новый сервис с секретом
vagrant@server1:~$ docker service create --secret my_pass --name redis redis:latest
qlylu89e6punwsqlilrbi6jy1
overall progress: 1 out of 1 tasks
1/1: running [==================================================>]
verify: Service converged
vagrant@server1:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ddf41e1c1d25 redis:latest "docker-entrypoint.s…" 9 seconds ago Up 9 seconds 6379/tcp redis.1.yw0cxjkqr687ahwezfxkrynan
vagrant@server1:~$ docker exec -it redis.1.yw0cxjkqr687ahwezfxkrynan bash
root@ddf41e1c1d25:/run/secrets# cd /run/secrets/
root@ddf41e1c1d25:/run/secrets# ls
my_pass
root@ddf41e1c1d25:/run/secrets# cat my_pass
123456