2015-04-13 8 views
30

Я полностью новичок в докер. Я попытался запустить контейнер с выходом, как показано ниже,Docker - Контейнер не работает

  1. Я перечислил все доступные контейнеры, используя docker ps -a. Он перечислил следующее: docker list all images
  2. Я ввел следующие команды, чтобы запустить контейнер, который находится на стадии выхода, и войти в терминал этого изображения.

    docker start 79b3fa70b51d docker exec -it 79b3fa70b51d \bin\sh

  3. Это бросает следующее сообщение об ошибке.

    FATA[0000] Error response from daemon: Container 79b3fa70b51d is not running

Но когда я начинаю контейнер с помощью docker start 79b3fa70b51d. Он выбрасывает идентификатор контейнера в качестве вывода, который является нормальным, если он работает нормально. Я не уверен, что вызывает эту ошибку. Любая идея о причинах и предложениях об этом будет очень полезна для меня. Заранее спасибо.

+3

Привет, Не могли бы вы объяснить, как вы решили эту проблему. Я боюсь, что нижеприведенный ответ не имеет большого смысла. – Jawad

ответ

11

Контейнер 79b3fa70b51d похоже только echo.

Это означает, что он запускается, эхо и немедленно выходит.

Следующий docker exec command не нашел бы его работающим, чтобы прикрепить себя к этому контейнеру и выполнить любую команду: слишком поздно. Контейнер уже вышел.

Команда docker exec запускает новую команду в запущенном контейнере.

Команда начала использовать docker exec будет работать только в то время как первичный процесс контейнера (PID 1) работает

+0

Привет, VonC, спасибо за ваш комментарий. Как я могу достичь входа в терминал изображения? – Stranger

+1

@Udhayakumar Для открытия сеанса достаточно простого «запуска docker -it -rm udhayakumar/busyboxwithtouch».По умолчанию входная точка должна быть/bin/sh, но это зависит от вашего файла Docker: вы могли бы определить другую точку входа и/или другую CMD. – VonC

+6

Привет, Не могли бы вы объяснить, как вы решили эту проблему. Я боюсь, что этот ответ не имеет большого смысла. – Jawad

8

По умолчанию докер контейнер будет выходить сразу же, если у вас нет какой-либо задачи, работающие на контейнере.

Чтобы контейнер работал в фоновом режиме, попробуйте запустить его с аргументом --detach (или -d).

Примеры:

docker pull debian 

docker run -t -d --name my_debian debian 
e7672d54b0c2 

docker ps -a 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES 
e7672d54b0c2  debian    "bash"    3 minutes ago  Up 3 minutes       my_debian 

#now you can execute command on the container 
docker exec -it my_debian bash 
[email protected]:/# 
0

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

docker exec -it 6198ef53d943 bash 
Error response from daemon: Container 6198ef53d9431a3f38e8b38d7869940f7fb803afac4a2d599812b8e42419c574 is not running 

docker commit 6198ef53d943 
sha256:ace7ca65e6e3fdb678d9cdfb33a7a165c510e65c3bc28fecb960ac993c37ef33 

docker run -it ace7ca65e6e bash 
[email protected]:/# 
Смежные вопросы