Используйте черновую систему Docker для фильтрации сетей - PullRequest
0 голосов
/ 25 февраля 2019

Я хочу использовать команду docker system prune, чтобы удалить все неиспользуемые контейнеры и образы, но я хочу, чтобы сеть с определенным драйвером оставалась активной.

Если я запускаю docker system prune --filter "driver!=foo", я получаю следующий результат: Invalid filter 'driver!'.

Когда я использую docker network ls, я могу фильтровать определенный драйвер, используя docker network ls --filter driver=foo.

Как я могу отфильтровать определенный драйвер в системе удаления докеров?

1 Ответ

0 голосов
/ 25 февраля 2019

Фильтр, который вы пытаетесь применить, не поддерживается.В качестве обходного пути вы можете использовать label при создании сети:

$ docker network create --label=mynet your_network_name_here

, а затем использовать:

docker system prune --filter "label!=mynet"

В документах упоминается, что docker system pruneподдерживает 2 случая фильтра:

Фильтрация

В настоящее время поддерживаются следующие фильтры:

  • до (<timestamp>) - удаляются только контейнеры, изображения исети, созданные до указанной метки времени
  • (label=<key>, label=<key>=<value>, label!=<key> или label!=<key>=<value>) - удалять только контейнеры, изображения, сети и тома с (или без, в случае * 1026)* используется) указанные метки.

Пример:

$ docker network create test-1
13ce668830472bb33d2d2b4be5b3236b59df4ea5d20f571e5ba04359ea3617f1

$ docker network create test-2
46a4bb3021250667fd26bf8d76bd06f789c7cf8149ab698b1cec40e1c23d34ad

$ docker network create test-3
a4c2f507e767dfef12684ce451e855a88225c44fcadfdbed7c7cd4502fd0cdd2

$ docker network create --label=mynet test-4
41e9d3c38c1de54e6bb4e25784d73ef7bfbe3e848208a130eb2564c46670a330

$ docker system prune --filter "label!=mynet"
WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all dangling images
        - all dangling build cache
        - Elements to be pruned will be filtered with:
        - label={"label!":{"mynet":true}}
Are you sure you want to continue? [y/N] y
Deleted Networks:
test-1
test-2
test-3

Total reclaimed space: 0B

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
3ca2cec4eda2        bridge              bridge              local
dc9d8ffaed44        host                host                local
d21298cd02e3        none                null                local
41e9d3c38c1d        test-4              bridge              local
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...