Конфигурации службы Docker swarm позволяют хранить неконфиденциальную информацию, например файлы конфигурации, вне образа службы или запущенных контейнеров. Это позволяет вам сохранять ваши образы как можно более универсальными, без необходимости привязывать файлы конфигурации к контейнерам или использовать переменные среды.
Конфиги работают аналогично секреты, за исключением того, что они не шифруются в состоянии покоя и монтируются непосредственно в файловую систему контейнера без использования RAM-дисков. Конфигурации могут быть добавлены или удалены из службы в любое время, и службы могут совместно использовать конфигурацию. Вы даже можете использовать конфигурации в сочетании с переменными среды или метками для максимальной гибкости. Значения конфигурации могут быть общими строками или двоичным содержимым (размером до 500 КБ).
Команда docker config create считывает стандартный ввод, поскольку последний аргумент, представляющий файл, из которого нужно читает конфигурацию, имеет значение -.
vagrant@server1:~$ nano conf.txt vagrant@server1:~$ docker config create my-config conf.txt cfhbsd6z1f3d16pksxpdrua8t
или
vagrant@server1:~$ echo "This is a config" | docker config create my-config -
Создаёт службу redis и предоставьте ей доступ к конфигурации. По умолчанию контейнер может получает доступ к конфигурации по адресу /my-config, но вы можете настроить имя файла в контейнере, используя параметр target.
vagrant@server1:~$ docker config ls ID NAME CREATED UPDATED orfthipobkf7m8c6d4obidlgn my-config 19 seconds ago 19 seconds ago vagrant@server1:~$ docker service create --name redis --config my-config redis:latest
Убедимся, что задача выполняется без проблем, используя docker service ps. Если все работает, вывод выглядит примерно так:
vagrant@server1:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e4c5a3212150 redis:latest "docker-entrypoint.s…" 8 seconds ago Up 7 seconds 6379/tcp redis.1.4t7ykwyua3ly435yjqglze3hv vagrant@server1:~$ docker exec -it redis.1.4t7ykwyua3ly435yjqglze3hv bash root@e4c5a3212150:/data# cd / root@e4c5a3212150:/# cat my-config This is a config
Останавливает и удаляет службу, а также удаляет конфигурацию из Docker.
vagrant@server5:~$ docker service rm redis vagrant@server5:~$ docker config rm my-config