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

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/create("Create Container") subgraph Lab Skills docker/ls -.-> lab-555222{{"Как использовать команду docker secret ls для вывода списка секретов"}} docker/create -.-> lab-555222{{"Как использовать команду docker secret ls для вывода списка секретов"}} end

Вывести список всех секретов

На этом этапе вы научитесь выводить список всех секретов в вашей среде Docker. Секреты Docker используются для управления конфиденциальными данными, такими как пароли, TLS-сертификаты и SSH-ключи. Они надежно хранятся в кластере Docker swarm и могут быть доступны для служб, запущенных в этом кластере.

Перед выводом списка секретов вам нужно инициализировать кластер Docker swarm. Swarm представляет собой кластер Docker-интерпретаторов (Docker engines). Вы можете инициализировать swarm на одной ноде для целей тестирования.

Откройте терминал и выполните следующую команду для инициализации swarm:

docker swarm init

Вы должны увидеть вывод, указывающий, что swarm был инициализирован и что текущая нода теперь является управляющей.

Теперь, когда swarm инициализирован, вы можете создать секрет. Мы создадим простой секрет с именем my_secret и значением my_secret_value.

Выполните следующую команду для создания секрета:

echo "my_secret_value" | docker secret create my_secret -

Эта команда берет строку "my_secret_value", передает ее в команду docker secret create и именует секрет my_secret. Дефис - в конце указывает, что значение секрета считывается из стандартного ввода.

Теперь выведем список секретов, существующих в вашем кластере Docker swarm. Для этого можно использовать команду docker secret ls.

Выполните следующую команду:

docker secret ls

Вы должны увидеть вывод, похожий на этот, показывающий идентификатор, имя и время создания только что созданного секрета:

ID                          NAME        CREATED
<secret_id>                 my_secret   About a minute ago

Эта команда выводит список всех секретов, в настоящее время управляемых вашим кластером Docker swarm. На следующих этапах вы научитесь фильтровать и форматировать этот вывод.

Фильтрация секретов по имени

На этом этапе вы научитесь фильтровать список секретов по их имени, используя команду docker secret ls с флагом --filter. Это полезно, когда у вас есть много секретов и вы хотите найти определенный секрет или группу секретов с похожими именами.

На предыдущем этапе вы создали секрет с именем my_secret. Создадим еще один секрет, чтобы продемонстрировать фильтрацию. Назовем его another_secret.

Выполните следующую команду для создания нового секрета:

echo "another_value" | docker secret create another_secret -

Теперь, если вы снова выполните команду docker secret ls, вы увидите оба секрета:

docker secret ls

Вывод будет похож на следующий, показывающий как my_secret, так и another_secret:

ID                          NAME            CREATED
<secret_id_1>               my_secret       About 2 minutes ago
<secret_id_2>               another_secret  About a few seconds ago

Для фильтрации списка, чтобы показать только секрет с именем my_secret, вы можете использовать опцию --filter name=my_secret.

Выполните следующую команду:

docker secret ls --filter name=my_secret

Теперь вывод будет показывать только секрет с именем my_secret:

ID                          NAME        CREATED
<secret_id_1>               my_secret   About 2 minutes ago

Вы также можете использовать частичные имена для фильтрации. Например, чтобы отфильтровать секреты, имена которых содержат "secret", вы можете использовать аналогичный фильтр, хотя для точного совпадения имен предыдущая команда более точна. Фильтр name выполняет точное совпадение.

Эта возможность фильтрации очень полезна в средах с большим количеством секретов, позволяя вам быстро найти конкретные секреты, с которыми вам нужно работать.

Фильтрация секретов по меткам (labels)

На этом этапе вы научитесь фильтровать секреты на основе меток (labels). Метки - это пары ключ-значение, которые вы можете прикрепить к объектам Docker, включая секреты, для их организации и классификации. Фильтрация по меткам - мощный способ управления секретами в сложных средах.

Сначала создадим новый секрет и добавим к нему метку при создании. Мы создадим секрет с именем labeled_secret и добавим метку environment=production.

Выполните следующую команду для создания секрета с меткой:

echo "production_value" | docker secret create --label environment=production labeled_secret -

Эта команда аналогична предыдущим командам docker secret create, но мы добавили флаг --label environment=production для прикрепления метки к секрету.

Теперь создадим еще один секрет с другой меткой. Назовем его dev_secret и присвоим метку environment=development.

Выполните следующую команду:

echo "development_value" | docker secret create --label environment=development dev_secret -

Если вы сейчас выведете список всех секретов с помощью команды docker secret ls, вы увидите все четыре секрета:

docker secret ls

Вывод будет показывать my_secret, another_secret, labeled_secret и dev_secret.

Для фильтрации секретов и отображения только тех, которые имеют метку environment=production, вы можете использовать опцию --filter label=environment=production.

Выполните следующую команду:

docker secret ls --filter label=environment=production

В выводе вы должны увидеть только labeled_secret:

ID                          NAME            CREATED
<secret_id_3>               labeled_secret  About a minute ago

Аналогично, чтобы отфильтровать секреты с меткой environment=development, вы должны использовать --filter label=environment=development.

Выполните следующую команду:

docker secret ls --filter label=environment=development

Это покажет только dev_secret:

ID                          NAME        CREATED
<secret_id_4>               dev_secret  About a minute ago

Вы также можете отфильтровать секреты, которые имеют определенный ключ метки, независимо от его значения, используя --filter label=environment.

Выполните следующую команду:

docker secret ls --filter label=environment

Это покажет как labeled_secret, так и dev_secret, так как у обоих есть ключ метки environment:

ID                          NAME            CREATED
<secret_id_3>               labeled_secret  About 2 minutes ago
<secret_id_4>               dev_secret      About 2 minutes ago

Фильтрация по меткам - гибкий способ управления и извлечения секретов на основе ваших собственных определенных категорий.

Форматирование вывода списка секретов

На этом этапе вы научитесь форматировать вывод команды docker secret ls с использованием флага --format. Это позволяет вам настраивать отображаемую информацию и способ ее представления, что полезно для написания скриптов или создания отчетов.

По умолчанию команда docker secret ls выводит таблицу с колонками для ID, NAME и CREATED. Вы можете изменить этот формат, используя флаг --format с синтаксисом шаблонов Go.

Например, чтобы отобразить только имена секретов, вы можете использовать формат {{.Name}}.

Выполните следующую команду:

docker secret ls --format "{{.Name}}"

Теперь вывод будет содержать только имена секретов, каждое на отдельной строке:

my_secret
another_secret
labeled_secret
dev_secret

Вы также можете указать несколько полей и отформатировать их в виде таблицы. Например, чтобы отобразить ID и Name, разделенные табуляцией, вы можете использовать table {{.ID}}\t{{.Name}}. Ключевое слово table обеспечивает выравнивание вывода в колонки.

Выполните следующую команду:

docker secret ls --format "table {{.ID}}\t{{.Name}}"

Вывод будет представлять собой таблицу с двумя колонками:

ID                          NAME
<secret_id_1>               my_secret
<secret_id_2>               another_secret
<secret_id_3>               labeled_secret
<secret_id_4>               dev_secret

Вы также можете вывести информацию в формате JSON, что очень полезно для программной обработки. Используйте формат json.

Выполните следующую команду:

docker secret ls --format "json"

Вывод будет представлять собой JSON-массив, где каждый элемент представляет собой секрет:

[
  {
    "ID": "<secret_id_1>",
    "Name": "my_secret",
    "CreatedAt": "2023-10-27 10:00:00 +0000 UTC",
    "UpdatedAt": "2023-10-27 10:00:00 +0000 UTC",
    "Labels": {}
  },
  {
    "ID": "<secret_id_2>",
    "Name": "another_secret",
    "CreatedAt": "2023-10-27 10:01:00 +0000 UTC",
    "UpdatedAt": "2023-10-27 10:01:00 +0000 UTC",
    "Labels": {}
  },
  {
    "ID": "<secret_id_3>",
    "Name": "labeled_secret",
    "CreatedAt": "2023-10-27 10:02:00 +0000 UTC",
    "UpdatedAt": "2023-10-27 10:02:00 +0002 UTC",
    "Labels": {
      "environment": "production"
    }
  },
  {
    "ID": "<secret_id_4>",
    "Name": "dev_secret",
    "CreatedAt": "2023-10-27 10:03:00 +0000 UTC",
    "UpdatedAt": "2023-10-27 10:03:00 +0000 UTC",
    "Labels": {
      "environment": "development"
    }
  }
]

Флаг --format обеспечивает большую гибкость в том, как вы просматриваете и обрабатываете информацию о ваших Docker-секретах.

Резюме

В этом практическом занятии (lab) вы научились выводить список всех секретов в вашей среде Docker с помощью команды docker secret ls. Вы начали с инициализации кластера Docker Swarm и создания примерного секрета. Затем вы использовали команду docker secret ls для просмотра идентификатора (ID), имени и времени создания созданного секрета.

Вы также научились фильтровать список секретов по имени и метке (label) с использованием флага --filter, а также форматировать вывод команды docker secret ls для лучшей читаемости или для использования в скриптах.