Не уверен, принадлежит ли он этому репо или libnetwork.
версия докера: Docker version 1.9.0-rc1, build 9291a0e
информация о докере:
Containers: 0
Images: 5
Engine Version: 1.9.0-rc1
Storage Driver: devicemapper
Pool Name: docker-253:0-390879-pool
Pool Blocksize: 65.54 kB
Base Device Size: 107.4 GB
Backing Filesystem: xfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 2.023 GB
Data Space Total: 107.4 GB
Data Space Available: 11.62 GB
Metadata Space Used: 1.7 MB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.146 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Deferred Deletion Enabled: false
Deferred Deleted Device Count: 0
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.93-RHEL7 (2015-01-28)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.0-229.14.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
CPUs: 2
Total Memory: 1.797 GiB
Name: carbon1.rmb938.com
ID: IAQS:6E74:7NGG:5JOG:JXFM:26VD:IAQV:FZNU:E23J:QUAA:NI4O:DI3S
uname -a: Linux carbon1.rmb938.com 3.10.0-229.14.1.el7.x86_64 #1 SMP Tue Sep 15 15:05:51 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Перечислите шаги для воспроизведения проблемы:
Опишите полученные результаты:
Если удаленный сетевой драйвер выдает ошибку при обработке /NetworkDriver.Leave, докер все равно убивает и удаляет контейнер, но не удаляет конечную точку. Это позволяет внутренней базе данных докера думать, что конечная точка все еще существует, даже если контейнер удален.
Когда вы пытаетесь удалить сеть, возвращается эта ошибка
docker network rm net1
Error response from daemon: network net1 has active endpoints
Опишите ожидаемые результаты:
Docker не должно быть разрешено уничтожать или удалять контейнер, если /NetworkDriver.Leave вернул ошибку.
Эта проблема кажется очень временной и возникает не очень часто.
@ rmb938 у нас было несколько проблем с зависшими конечными точками, которые были решены через # 17191. RC2 должен иметь исправление для этого (или последнюю версию мастера). Для тестировщиков RC1 (огромное спасибо) нам может потребоваться дополнительный обходной путь для очистки состояний перед запуском RC2. мы обновим правильную документацию.
Потрясающие. Спасибо.
@mavenugo Я только что воспроизвел это в 1.10.0:
похоже, что # 17191 не был полным исправлением ...
У вас есть обходной путь? Кажется, даже отскок демона докера ничего не решает.
(и дайте мне знать, если я смогу получить больше отладочной информации, она все еще воспроизводится на моей машине)
Я также только что воспроизвел это в 1.10.3 и приземлился здесь через Google в поисках работы. Я не могу принудительно отключить активные конечные точки. B / c ни один из контейнеров, перечисленных через docker network inspect
все еще не существует.
В конце концов мне пришлось воссоздать контейнер консула и перезапустить демон докера.
ping @mavenugo , хотите ли вы, чтобы эта проблема была повторно открыта, или предпочитаете новую проблему, если она имеет другую основную причину?
Уточнение, докер 1.10.1
Client:
Version: 1.10.1
API version: 1.22
Go version: go1.4.3
Git commit: 9e83765
Built: Fri Feb 12 12:41:05 2016
OS/Arch: linux/arm
Server:
Version: 1.10.1
API version: 1.22
Go version: go1.4.3
Git commit: 9e83765
Built: Fri Feb 12 12:41:05 2016
OS/Arch: linux/arm
Позвольте мне снова открыть это для расследования
Мадху, назначил вас, но не стесняйтесь переназначить, чтобы указать на соответствующий обходной путь, если он уже есть: smile:
@keithbentrup @brendandburns благодарим за то, что подняли вопрос. Пара вопросов
docker network ls
./var/lib/docker/network/files/local-kv.db
(через какой-нибудь веб-сайт для обмена файлами) и какой network
вы пытаетесь удалить? А как изначально создавалась сеть?К вашему сведению. для сетевого драйвера с несколькими хостами docker поддерживает конечные точки для сети в кластере в KV-Store. Следовательно, если на каком-либо узле в этом кластере все еще есть конечная точка в этой сети, мы увидим эту ошибку, и это ожидаемое состояние.
@thaJeztah PTAL, мой комментарий выше, и, исходя из сценария, это не должно быть ошибкой. Я могу оставить этот вопрос открытым, если это поможет.
@mavenugo Да, я использую драйвер оверлея через docker-compose с хостом swarm, управляющим 2 узлами.
Когда я docker network inspect
сеть на каждом отдельном узле, на 1 узле был указан 1 контейнер, который больше не существовал, и поэтому не мог быть удален с помощью docker rm -fv
с использованием имени или идентификатора контейнера.
@keithbentrup Это устаревший случай конечной точки. У вас есть журнал ошибок, когда этот контейнер был первоначально удален (который оставил конечную точку в этом состоянии).
Кстати, если контейнер удален, но конечная точка все еще видна, то можно принудительно отключить конечную точку с помощью docker network disconnect -f {network} {endpoint-name}
. Вы можете получить имя конечной точки с помощью команды docker network inspect {network}
.
@brendandburns, не могли бы вы помочь ответить на https://github.com/docker/docker/issues/17217#issuecomment -195739573?
@mavenugo извините за задержку. Я не использую docker multi-host network afaik. Это одноузловой Raspberry Pi, и я ничего не сделал, кроме установки докера через hypriot.
Вот запрошенный вами результат ( network
- это сеть, которую я не могу удалить)
$ docker network ls
NETWORK ID NAME DRIVER
d22a34456cb9 bridge bridge
ef922c6e861e network bridge
c2859ad8bda4 none null
150ed62cfc44 host host
Файл kv прилагается, мне пришлось назвать его .txt, чтобы обойти фильтры github, но это двоичный файл.
Я создал сеть через прямые вызовы API (dockerode)
Это сработало (создать и удалить) много раз, я думаю, в этом случае я docker rm -f <container-id>
но я не уверен, я мог выключить и снова включить машину ...
Надеюсь, это поможет.
--brendan
@mavenugo Если под docker network disconnect -f {network} {endpoint-name}
вы имеете в виду docker network disconnect [OPTIONS] NETWORK CONTAINER
за docker network disconnect --help
, я пробовал это, но он пожаловался (что неудивительно) с No such container
.
Если вы имели в виду EndpointID
вместо имени / идентификатора контейнера, я не пробовал это (но попробую в следующий раз), потому что это не то, что предлагалось в --help
.
@keithbentrup я имел в виду -f
которая доступна в v1.10.x. Параметр Force также учитывает имя конечной точки от других узлов в кластере. Следовательно, мои предыдущие инструкции будут отлично работать с опцией -f
если вы используете docker v1.10.x.
@brendandburns благодарит за информацию, и это очень полезно для сужения проблемы. Имеется устаревшая ссылка на конечную точку, которая вызывает эту проблему. Устаревшая ссылка, скорее всего, вызвана отключением питания во время очистки конечных точек. мы решим эту проблему несоответствия в 1.11.
@mavenugo рада, что это помогло. А пока, если я сдую этот файл, все еще будет работать?
Благодарность
--brendan
@brendandburns да. пожалуйста, продолжайте. он просто отлично подойдет вам.
@mavenugo Я думаю, вы меня неправильно поняли. Я использовал параметр -f
(проверенный в моей истории оболочки) на v1.10.x, но с идентификатором контейнера (а не идентификатором конечной точки) b / c, который предлагает помощь (контейнер, а не конечная точка). Если он предназначен для работы либо с идентификатором контейнера, либо с идентификатором конечной точки, то это ошибка b / c, она определенно не отключается от идентификатора контейнера и опции -f
когда контейнер больше не существует.
Мне удалось воссоздать условие при попытке удалить docker_gwbridge, которое могло бы немного облегчить путаницу.
Когда я использовал докер-клиент, указывающий на диспетчер роя, я испытал такой вывод:
~/D/e/m/compose (develop) $ docker network inspect docker_gwbridge
[
{
"Name": "docker_gwbridge",
"Id": "83dfeb756951d3d175e9058d0165b6a4997713c3e19b6a44a7210a09cd687d54",
"Scope": "local",
"Driver": "bridge",
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1/16"
}
]
},
"Containers": {
"41ebd4fc365ae07543fd8454263d7c049d8e73036cddb22379ca1ce08a65402f": {
"Name": "gateway_41ebd4fc365a",
"EndpointID": "1cb2e4e3431a4c2ce1ed7c0ac9bc8dee67c06982344a75312e20e4a7d6e8972c",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.bridge.enable_icc": "false",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.name": "docker_gwbridge"
}
}
]
~/D/e/m/compose (develop) $ docker network disconnect -f docker_gwbridge 41ebd4fc365ae07543fd8454263d7c049d8e73036cddb22379ca1ce08a65402f
Error response from daemon: No such container: 41ebd4fc365ae07543fd8454263d7c049d8e73036cddb22379ca1ce08a65402f
~/D/e/m/compose (develop) $ docker network disconnect -f docker_gwbridge 1cb2e4e3431a4c2ce1ed7c0ac9bc8dee67c06982344a75312e20e4a7d6e8972c
Error response from daemon: No such container: 1cb2e4e3431a4c2ce1ed7c0ac9bc8dee67c06982344a75312e20e4a7d6e8972c
~/D/e/m/compose (develop) $ docker network rm docker_gwbridge
Error response from daemon: 500 Internal Server Error: network docker_gwbridge has active endpoints
Сначала я попытался удалить контейнер по имени контейнера (не показано), затем по идентификатору, а затем по идентификатору конечной точки контейнера. Ни один из них не увенчался успехом. Затем я вошел на хост докера и использовал локальный клиент докера для выдачи команд через сокет докера unix:
root@dv-vm2:~# docker network disconnect -f docker_gwbridge 41ebd4fc365ae07543fd8454263d7c049d8e73036cddb22379ca1ce08a65402f
Error response from daemon: endpoint 41ebd4fc365ae07543fd8454263d7c049d8e73036cddb22379ca1ce08a65402f not found
root@dv-vm2:~# docker network disconnect -f docker_gwbridge 1cb2e4e3431a4c2ce1ed7c0ac9bc8dee67c06982344a75312e20e4a7d6e8972c
Error response from daemon: endpoint 1cb2e4e3431a4c2ce1ed7c0ac9bc8dee67c06982344a75312e20e4a7d6e8972c not found
root@dv-vm2:~# docker network rm docker_gwbridge
Error response from daemon: network docker_gwbridge has active endpoints
root@dv-vm2:~# docker network disconnect -f docker_gwbridge gateway_41ebd4fc365a
root@dv-vm2:~# docker network rm docker_gwbridge
root@dv-vm2:~# docker network inspect docker_gwbridge
[]
Error: No such network: docker_gwbridge
1) Обратите внимание на вывод swarm vs direct docker client: swarm относится к контейнерам; докер относится к конечным точкам. Вероятно, это следует сделать последовательным.
2) Единственным успешным вариантом было указание имени конечной точки (а не имени или идентификатора контейнера или идентификатора конечной точки). --help
должно убирать или разрешать ввод нескольких значений.
3) Я не тестировал имя конечной точки с помощью swarm, поэтому не знаю, сработало бы это.
@keithbentrup, это правильно. как я предлагал ранее. docker network disconnect -f {network} {endpoint-name}
... пожалуйста, используйте имя конечной точки. Мы можем улучшить это, чтобы также поддерживать идентификатор конечной точки. Но я хотел подтвердить, что, используя опцию силы, вы смогли добиться прогресса.
@mavenugo, но то, что вы предлагаете, - это не то, что написано в справке. кроме того, ему не хватает последовательности большинства команд, где идентификатор / имя взаимозаменяемы.
если другие не найдут этот поток, другие будут повторять ту же проблему, поэтому перед добавлением поддержки идентификатора конечной точки исправьте --help
.
@keithbentrup мы исправим и --help, и функциональность.
Я только что воспроизвел эту проблему с докером v1.11.2 при попытке docker-compose down
.
Предыдущая попытка запустить docker-compose down
привела к закрытию сети app_front.
$ docker-compose down
Removing network app_front
WARNING: Network app_front not found.
Removing network app_back
ERROR: network app_back has active endpoints
$ docker network inspect app_back
[
{
"Name": "app_back",
"Id": "4a8d557eda7ce06d222fc0a9053069f44e75d25147300796686522a872261245",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.22.0.0/16",
"Gateway": "172.22.0.1/16"
}
]
},
"Internal": false,
"Containers": {
"702e9916e86b7f77af363014134f160a8dcd189399719e062069c10f735cb927": {
"Name": "app_db_1",
"EndpointID": "1decedbca5bc704be84f19e287926361d196d20fe2a9bbf092ab15b37b856b3a",
"MacAddress": "02:42:ac:16:00:02",
"IPv4Address": "172.22.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
информация о докере
Containers: 17
Running: 1
Paused: 0
Stopped: 16
Images: 140
Server Version: 1.11.2
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 245
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge null host
Kernel Version: 4.4.12-boot2docker
Operating System: Boot2Docker 1.11.2 (TCL 7.1); HEAD : a6645c3 - Wed Jun 1 22:59:51 UTC 2016
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.955 GiB
Name: default
ID: LKRP:E2TX:KNVZ:UD4M:FIGG:ZROO:CIA5:WBKH:RNUB:KXTQ:E6DC:545P
Docker Root Dir: /mnt/sda1/var/lib/docker
Debug mode (client): false
Debug mode (server): true
File Descriptors: 18
Goroutines: 38
System Time: 2016-06-15T22:44:13.34779866Z
EventsListeners: 0
Username: tohagan
Registry: https://index.docker.io/v1/
Labels:
provider=virtualbox
У меня возникают проблемы при попытке отключить конечные точки наложения роя,
Ответ от демона об ошибке: в сети es-swarm-overlay есть активные конечные точки
@ rmb938 скажите, пожалуйста, что не так? может быть другая проблема с этим вопросом?
@mavenugo
docker network disconnect -f [Network-Name] [Endpoint-Name]
Это сработало для меня.
У меня может быть такая же проблема с docker 1.13.0
.
Поскольку никто в этой теме не привел пример того, что я сделал, я опубликую его.
Для завершения это ошибка, которая запускает его. Это может быть потому, что у меня есть codekitchen/dinghy-http-proxy:2.5.0
который прослушивает порт 80.
$ docker-compose -f deploy/docker-compose/docker-compose.yml
Creating network "dockercompose_default" with the default driver
Creating dockercompose_front-end_1
# and so on..
ERROR: for edge-router Cannot start service edge-router: driver failed programming external connectivity on endpoint dockercompose_edge-router_1 (3ed8fb6cf4bc221dce615a9a3c5b8e4f0f8332e00e6c6d9b9f9bf0b09da57b36): Bind for 0.0.0.0:80 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.
И пытаясь все это обрушить:
$ docker-compose -f deploy/docker-compose/docker-compose.yml down
Stopping dockercompose_front-end_1
# and so on..
ERROR: network dockercompose_default has active endpoints
И как убил сеть:
$ docker network inspect dockercompose_default
[
{
"Name": "dockercompose_default", # <--- Param 1
"Id": "dd1326487a637df8a4a7a11856864a0059fca45cb63e8363bfe5196082d42d6e",
"Created": "2017-02-08T00:22:41.341653339Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Containers": {
"ea7a142c113700145e894c950b18fd4dec8a53e04a45045f1fb71c47eae1a13b": {
"Name": "dinghy_http_proxy", # <--- Param 2
"EndpointID": "38f362af8b22e575cc987f68399a97f3ed10abf2c4cc365460dba768f2df8daa",
"MacAddress": "02:42:ac:12:00:0d",
"IPv4Address": "172.18.0.13/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
$ docker network disconnect -f dockercompose_default dinghy_http_proxy
$ docker network rm dockercompose_default
dockercompose_default
У @nicolaiskogheim есть действующее решение. Однако у моей команды есть файл docker-compose с ~ 20 контейнерами. Итак, я нашел другое решение.
Я хотел бы добавить, что вы также можете перезапустить демон docker (например, systemctl restart docker
на centos), и тогда ссылки между сетью и контейнерами исчезнут. Тогда вы можете docker system prune -f
с успехом.
@mdotson @nicolaiskogheim, пожалуйста, откройте новый выпуск; хотя сообщение об ошибке такое же, первоначальная проблема, обсуждаемая здесь, была исправлена. Вы видите это только при использовании docker compose? В этом случае это также может быть проблемой в порядке, в котором docker compose выполняет действия?
@thaJeztah Только с docker-compose. У меня это произошло только один раз, когда в моем ящике Jenkins закончилась память, и мне с трудом удалось убить контейнеры докеров. Возможно, не хватило памяти для удаления ссылок между контейнерами и сетью?
Не уверен, но в любом случае, я думаю, что большинство людей гуглит сообщение об ошибке и будут приходить сюда в поисках некоторых команд, которые можно скопировать и вставить, чтобы исправить свою проблему.
У меня была та же проблема, что и у @nicolaiskogheim и @mdotson , моему контейнеру infxdb не хватило памяти, и он стал нездоровым. Я не мог удалить, остановить или удалить (удалось удалить в принудительном режиме).
После этого я снова пытался запустить докер с docker-compose
:
# docker-compose -f /etc/docker/docker-compose.yml up -d
Creating influxdb1
ERROR: for influxdb Cannot start service influxdb: service endpoint with name influxdb1 already exists
ERROR: Encountered errors while bringing up the project.
чем пытался удалить сеть:
# docker network rm 834ea759c916
Error response from daemon: network docker_default has active endpoints
и чем я попробовал решение @nicolaiskogheim :
# docker network disconnect -f docker_default influxdb1
Client:
Version: 1.13.1
API version: 1.26
Go version: go1.7.5
Git commit: 092cba3
Built: Wed Feb 8 06:50:14 2017
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Go version: go1.7.5
Git commit: 092cba3
Built: Wed Feb 8 06:50:14 2017
OS/Arch: linux/amd64
Experimental: false
docker-compose version 1.11.1, build 7c5d5e4
docker-py version: 2.0.2
CPython version: 2.7.12
OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
перезапуск службы докеров устранил проблему для меня.
sudo service docker restart
docker network rm <network name>
Я вижу ту же проблему при попытке удалить стек:
> sudo docker stack rm my-stack
Removing network my-stack_default
Failed to remove network g0450dknntdsfj1o055mk4efm: Error response from daemon: network my-stack_default has active endpointsFailed to remove some resources
Сначала я создал такой стек:
sudo docker stack deploy -c docker-compose.yml --with-registry-auth my-stack
Я использую эту версию:
Client:
Version: 17.03.1-ce
API version: 1.27
Go version: go1.7.5
Git commit: c6d412e
Built: Mon Mar 27 17:14:09 2017
OS/Arch: linux/amd64
Server:
Version: 17.03.1-ce
API version: 1.27 (minimum version 1.12)
Go version: go1.7.5
Git commit: c6d412e
Built: Mon Mar 27 17:14:09 2017
OS/Arch: linux/amd64
Experimental: false
К счастью, sudo service docker restart
это исправляет, но поведение все еще не идеальное.
Обнаружил это в 17.07.0-ce, подход disconnect
не работал, затем перезапустил докер и снова успешно запустил rm
.
Я столкнулся с этим и с роевым кластером 17.06. заканчиваются варианты, кроме перезагрузки.
sudo service docker restart
избавляет меня от него в ubuntu, позволяя мне снова развернуть и запустить свои контейнеры.
Также работает, если один из контейнеров отказывается быть убитым (случается чаще, чем я бы надеялся). Раздражает, так как заставляет меня отключать все службы из-за одного вредного контейнера.
Имеет эту проблему также в 17.09.0-в. Откройте это снова!
Это часто происходило со мной в среде с малым объемом памяти. Посмотрим, улучшит ли это добавление памяти, теперь мои процессы останавливаются нормально.
@tomholub Нет, проблема не в памяти. Но перезапустил службу докеров, тогда я мог удалить сеть.
По-прежнему возникает эта проблема время от времени при попытке остановить и удалить активно работающий контейнер. (Докер для Mac версии 17.09.0-ce-mac35 (19611) Канал: стабильный a98b7c1b7c)
Client:
Version: 17.09.0-ce
API version: 1.32
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep 26 22:40:09 2017
OS/Arch: darwin/amd64
Server:
Version: 17.09.0-ce
API version: 1.32 (minimum version 1.12)
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep 26 22:45:38 2017
OS/Arch: linux/amd64
Experimental: false
$ uname -a
Darwin Alexei-Workstation.local 16.7.0 Darwin Kernel Version 16.7.0: Wed Oct 4 00:17:00 PDT 2017; root:xnu-3789.71.6~1/RELEASE_X86_64 x86_64
Обычно это уходит, если я жду случайное количество секунд. Но он все еще там.
КСТАТИ. Для меня это произошло во время docker-compose down --volumes --remove-orphans
все еще видя эти "осиротевшие сети", не могли бы вы снова открыть @ rmb938 @thaJeztah
Ответ от демона об ошибке: сеть abcd_default id 3f2f1a6cb1cee2d82f2e2e59d10a099834a12b18eb7e3e48d6482d758bd93617 имеет активные конечные точки
docker version
Client:
Version: 17.06.0-ce
API version: 1.30
Go version: go1.8.3
Git commit: 02c1d87
Built: Fri Jun 23 21:23:31 2017
OS/Arch: linux/amd64
Server:
Version: 17.06.0-ce
API version: 1.30 (minimum version 1.12)
Go version: go1.8.3
Git commit: 02c1d87
Built: Fri Jun 23 21:19:04 2017
OS/Arch: linux/amd64
единственный способ их обрезать, кажется, перезапустить двигатель
Удачи сегодня
docker-compose down
Removing network gen365cms_default
ERROR: network gen365cms_default id b6c51b1a83ee2b938ee1c7f7148347dc9ef80a8d8ed93334873f1f84b3f27c04 has active endpoints
docker version
Client:
Version: 17.12.0-ce-rc4
API version: 1.35
Go version: go1.9.2
Git commit: 6a2c058
Built: Wed Dec 20 15:53:52 2017
OS/Arch: darwin/amd64
Server:
Engine:
Version: 17.12.0-ce-rc4
API version: 1.35 (minimum version 1.12)
Go version: go1.9.2
Git commit: 6a2c058
Built: Wed Dec 20 15:59:49 2017
OS/Arch: linux/amd64
Experimental: true
Это все еще можно воспроизвести на Docker version 18.06.1-ce, build e68fc7a
Похоже, что даже когда контейнеры файла набора удаляются, их конечные точки иногда не удаляются, что иногда может происходить при отключении питания, поэтому композиции не могут быть полностью запущены или полностью удалены.
Когда ни одна команда не работает, выполните
sudo service docker restart
ваша проблема будет решена
Или sudo reboot -f
. Работает на 100%.
у меня была аналогичная проблема сегодня. Я запустил «docker container ls -a» и увидел, что несколько все еще работающих контейнеров используют сеть, которую я запустил через стек докеров. поэтому вручную, когда я убил эти контейнеры, я смог удалить сеть
Думаю, я только что столкнулся с проблемой, о которой здесь упоминал @danwdart . Я нахожусь на Docker version 18.09.2, build 6247962
я выполнил docker-compose -f $PATH_TO_MY_CONFIG down
и получил следующую ошибку:
ERROR: error while removing network: network michaelmoore_default id 6838b92e60a83f53c5637065e449f9124a2f297c482f1a7326cf247bfd38f70c has active endpoints
Прошлой ночью я позволил аккумулятору моего ноутбука разрядиться, что я делаю редко, и после перезапуска докера я смог успешно выполнить ту же команду compose «вниз».
Для некоторых это может быть очевидно, но не для меня, просто подумал, что поделюсь.
Мне нужно было просто запустить docker-compose rm
- docker-compose down
- это то, что я обычно делаю, а ps -a
показывал контейнеров, так что это действительно сбило меня с толку, пока я не запустил rm
cmd . Думал, что поделюсь.
У меня возникла та же проблема, так как сеть не смогла удалить все действия, отметив, что это помогло. моя версия - Docker версии 18.09.6, сборка 481bc77
Чтобы исправить это, мне нужно перезапустить службы докеров. "sudo service docker restart" после этого я могу удалить с помощью "docker network rm {network}"
@danwdart Другая причина - наличие болтающихся контейнеров. чтобы удалить их, используйте команду docker-compose down --remove-orphans
которая должна помочь.
Привет с 2019 года, @mavenugo. Я хотел бы передать свои искренние, искренние благодарности за то, что в 2016 году
Спустя более четырех лет это все еще проблема. Есть ли более простой способ отключить каждый контейнер от каждой сети, к которой они подключены, чем сценарий оболочки из 10+ строк? FWIW, похоже, работает:
#!/usr/bin/env bash
set -o errexit -o nounset -o pipefail
trap 'rm --recursive "$workspace"' EXIT
workspace="$(mktemp --directory)"
error_log="${workspace}/error.log"
for container_id in $(docker ps --all --quiet)
do
readarray -t network_names < <(docker inspect "$container_id" | jq --raw-output '.[] | .NetworkSettings.Networks | if . == null then empty else keys | .[] end')
for network_name in "${network_names[@]}"
do
echo "Disconnecting container ${container_id} from network ${network_name}."
exit_code=0
docker network disconnect "$network_name" "$container_id" 2> "$error_log" || exit_code="$?"
if [[ "$exit_code" -ne 0 ]]
then
if grep --fixed-strings --quiet --regexp 'not connected to network' --regexp 'not connected to the network' "$error_log"
then
echo 'Ignoring "not connected" error…'
else
cat "$error_log" >&2
exit "$exit_code"
fi
fi
done
done
В итоге:
Комбинация решения @mavenugo и
Еще одно спасибо @mavenugo здесь с 2020 года
@mavenugo Если под
docker network disconnect -f {network} {endpoint-name}
вы имеете в видуdocker network disconnect [OPTIONS] NETWORK CONTAINER
заdocker network disconnect --help
, я пробовал это, но он пожаловался (что неудивительно) сNo such container
.Если вы имели в виду
EndpointID
вместо имени / идентификатора контейнера, я не пробовал это (но попробую в следующий раз), потому что это не то, что предлагалось в--help
.
@keithbentrup - {endpoint-name}
в приведенной выше команде в основном представляет собой container-id/name
в выводе, полученном из следующей команды:
$deminem: docker network inspect e60b9386b9e2
где e60b9386b9e2 - идентификатор сети.
[
{
"Name": "project-name-master_default",
"Id": "e60b9386b9e20f5222513bd6166f6d8e3224e72e906e2b07376e88ba79d87b26",
"Created": "2020-04-02T18:48:29.2694181Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": true,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"d435c36e882ec91dff780c55c0399c52b14096baea402647eaff2f1593602df9": {
**"Name": "project-name-master_monitoring_1"**,
"EndpointID": "7838e98efd8be4cabccc778707efadbb6194cbd73dc907f0129ee8b9119e4349",
"MacAddress": "02:42:ac:12:00:0e",
"IPv4Address": "172.18.0.14/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {
"com.docker.compose.network": "default",
"com.docker.compose.project": "project-name",
"com.docker.compose.version": "1.25.4"
}
}
]
Примечание: как выделено жирным шрифтом. "Name": "project-name-master_monitoring_1"
.
Просто было это с
docker --version
Docker version 19.03.12-ce, build 48a66213fe
uname -a
Linux jotunheim 5.8.5-arch1-1 #1 SMP PREEMPT Thu, 27 Aug 2020 18:53:02 +0000 x86_64 GNU/Linux
на Arch. Помог перезапуск службы.
Самый полезный комментарий
@keithbentrup Это устаревший случай конечной точки. У вас есть журнал ошибок, когда этот контейнер был первоначально удален (который оставил конечную точку в этом состоянии).
Кстати, если контейнер удален, но конечная точка все еще видна, то можно принудительно отключить конечную точку с помощью
docker network disconnect -f {network} {endpoint-name}
. Вы можете получить имя конечной точки с помощью командыdocker network inspect {network}
.