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).

Изменение: Поскольку есть более свежие сообщения ниже, они отвечают на вопрос лучше, чем мой. Сетевой адаптер застрял на демоне. Я обновляю мой, так как он, возможно, "наверху" списка, и люди могут не прокручиваться вниз.

  1. Перезапуск вашего демона docker/docker service/docker-machine - самый простой ответ.

  2. лучший ответ (через Шалабха Неги):

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>

работал на меня