Docker Ошибка ответа от демона: конечная точка службы с именем.
Привет, я получаю эту странную ошибку, когда пытаюсь запустить докер с именем, которое дает мне эту ошибку.
docker: Error response from daemon: service endpoint with name qc.T8 already exists.
однако нет контейнера с этим именем.
> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
> sudo docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 3
Server Version: 1.12.3
Storage Driver: aufs
Root Dir: /ahdee/docker/aufs
Backing Filesystem: extfs
Dirs: 28
Dirperm1 Supported: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: null bridge host overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: apparmor
Kernel Version: 3.13.0-101-generic
Operating System: Ubuntu 14.04.4 LTS
OSType: linux
Architecture: x86_64
CPUs: 64
Total Memory: 480.3 GiB
Я все равно смогу это сделать? благодарю!
А.
Ответы
Ответ 1
TL;DR: перезапустите демон docker или перезапустите ваш компьютер (если вы используете его, например, на Mac).
Изменение: Поскольку есть более свежие сообщения ниже, они отвечают на вопрос лучше, чем мой. Сетевой адаптер застрял на демоне. Я обновляю мой, так как он, возможно, "наверху" списка, и люди могут не прокручиваться вниз.
-
Перезапуск вашего демона docker/docker service/docker-machine - самый простой ответ.
-
лучший ответ (через Шалабха Неги):
docker network inspect <network name>
docker network disconnect <network name> <container id/ container name>
Это также быстрее в режиме реального времени, если вы можете найти сеть, поскольку перезапуск докерской машины/демона/службы, по моему опыту, является медленной вещью. Если вы используете это, пожалуйста, прокрутите вниз и нажмите +1 в ответе.
Таким образом, проблема, вероятно, заключается в вашем сетевом адаптере (виртуальном, докерском, а не реальном): быстро взгляните на это: https://github.com/moby/moby/issues/23302.
Предотвратить это снова немного сложно. Кажется, может быть проблема с докером, когда контейнер выходит с неправильным кодом состояния (например, ненулевым), который держит сеть открытой. Затем вы не можете запустить новый контейнер с этой конечной точкой.
Ответ 2
На всякий случай кому-то это нужно. Как пояснил @Jons, это была странная сетевая проблема. Поэтому я решил это, вынудив удаление
docker network disconnect --force bridge qc.T8
А
Ответ 3
docker network inspect <network name>
docker network disconnect <network name> <container id/ container name>
Вы также можете попробовать выполнить следующее: docker network prune docker system prune system prune system prune эти команды помогут очистить зомби-контейнеры, том и сеть. Когда никакая команда не работает, тогда делайте
sudo service docker restart
ваша проблема будет решена
Ответ 4
Я создал script некоторое время назад, я думаю, что это должно помочь людям, работающим с роем. Используя докер-машину, это может немного помочь.
https://gist.github.com/lcamilo15/7aaaebe71852444ea8f1da5c4c9c84b7
declare -a NODE_NAMES=("node_01", "node_02");
declare -a CONTAINER_NAMES=("container_a", "container_b");
declare -a NETWORK_NAMES=("network_1", "network_2");
for x in "${NODE_NAMES[@]}"; do;
docker-machine env $x;
eval $(docker-machine env $x)
for CONTAINER_NAME in "${CONTAINER_NAMES[@]}"; do;
for NETWORK_NAME in "${NETWORK_NAMES[@]}"; do;
echo "Disconnecting $CONTAINER_NAME from $NETWORK_NAME"
docker network disconnect -f $NETWORK_NAME $CONTAINER_NAME;
done;
done;
done;
Ответ 5
Это может быть связано с тем, что внезапное удаление контейнера может оставить сеть открытой для этой конечной точки (имя контейнера).
Попробуйте остановить контейнер перед его удалением.
docker stop <container-name>
. Тогда docker rm <container-name>
.
Тогда docker run <same-container-name>
.
Ответ 6
docker network rm <network name>
работал на меня