Ответ от демона: контейнер [id] не запущен - PullRequest
0 голосов
/ 13 июня 2018

Я использую докер впервые.Я создал образ докера для DB2, и при запуске входа в экземпляр с помощью команды

sudo docker exec -i -t db2 /bin/bash

я получил следующую ошибку:

Error response from daemon: Container [id] is not running

Я также попытался запустить экземпляр с помощью:

sudo docker start [id]

Возвращено сообщение об ошибке:

Error response from daemon: driver failed programming external connectivity on endpoint db2 ([id]): Bind for 0.0.0.0:50000 failed: port is already allocated
Error: failed to start containers: [id]

Может кто-нибудь помочь с этим?

1 Ответ

0 голосов
/ 13 июня 2018

Если вы посмотрите на сообщение об ошибке, оно показывает, что вы пытаетесь запустить точку входа в контейнере [id], который использует порт 50000, который уже используется.

Вот почему docker start [id] не работает.

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

  • docker exec следует использовать с уже запущенным идентификатором контейнера, а не изображениями, а не точками входа.Так что, может быть, вы пропустили docker run до docker exec.Попробуйте сделать docker run -it db2 /bin/bash, если db2 - это ваш образ докера.
  • Другая возможность состоит в том, что ваш контейнер запустился и точка входа вышла по любой причине, не освобождая порт 50000. Итак, когда вы пытались перезапустить, не отпустивПорт, если контейнер вышел, но не был удален, невозможно запустить другой докер с использованием этого порта.Позвольте мне порекомендовать вам сделать docker container prune для очистки вышедших предыдущих контейнеров.
  • Возможно, вы запускаете два или более контейнеров из одного и того же изображения (может быть db2 ) без какого-либо сопоставления портов.Если вы хотите запустить несколько экземпляров одного и того же образа докера, вы можете сделать две вещи:
    1. Использовать docker swarm , kubernetes или аналогичный контейнеру весов (pod).Он позволяет использовать тот же порт 50000.
    2. Использовать сопоставление портов в команде docker run: например,
      • для первого контейнера, выполнить docker run -d -p 50001:50000 [docker-image] [entrypoint]
      • для второгоcontainer, do docker run -d -p 50002:50000 [docker-image] [entrypoint] Таким образом, у вас будет несколько отображений из разных портов на один и тот же 50000, чтобы избежать этой ошибки повторного использования порта, но я не уверен, что это то, что вы хотите сделать.Я только пытаюсь помочь вам с небольшой информацией, которую вы предоставили.

Надеюсь, в любом случае, это полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...