2016-07-26 4 views
2

Обычно я хочу открыть оболочку bash на изображении докера. Процесс с несколькими командами для этого будет:Не удается выполнить команду docker pid для команды bash

$ docker ps 
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS    NAMES 
bba983d72d48  scubbo/datenight "apachectl -DFOREGROU" 7 days ago   Up 7 days   0.0.0.0:80->80/tcp pensive_bell 
$ docker exec -it bba983d72d48 bash 

Я хотел бы сократить это. Тем не менее, я получаю следующее сообщение об ошибке:

$ docker ps | awk 'NR > 1 {print $1}' | xargs -I {} docker exec -it {} bash 
cannot enable tty mode on non tty input 

От маленькой Googling, я нашел this issue - однако, если я бросаю вариант -t, команда «завершает» сразу.

Я подтвердил, что вручную копировать-вставить вывод $ docker ps | awk 'NR > 1 {print $1}' в соответствующее положение docker exec -it {} bash.

EDIT: вырезание docker ps из трубы, следующий также не:

$ docker ps 
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS    NAMES 
4f20409c37b7  scubbo/datenight "apachectl -DFOREGROU" 8 days ago   Up 8 days   0.0.0.0:80->80/tcp drunk_northcutt 
$ docker ps -q 
4f20409c37b7 
$ echo '4f20409c37b7' | xargs -I {} docker exec -it {} bash 
cannot enable tty mode on non tty input 

ответ

1

я, как правило, делают это, но я гнездо мои команды

docker exec -it $(docker ps | awk 'NR > 1 {print $1}') bash 

слово предупреждения, хотя, что вы» Будут ошибки, если работает более одного контейнера.

1

Обратите внимание, что docker ps -q выдает только идентификаторы работающих контейнеров

Если у вас есть только один контейнер запущен, просто сделать

docker exec -it $(docker ps -q) bash

, если вы хотите, чтобы войти в последний запущенный контейнер

docker exec -it $(docker ps -lq) bash

Если вы дадите имя своему c ontainer при запуске он

docker run --name nostalgic...

, то вы можете фильтровать его с

docker exec -it $(docker ps -q --filter "name=nostalgic") bash

Проверьте документ

https://docs.docker.com/engine/reference/commandline/ps/

+0

Спасибо, это аккуратный набор команд! Я все еще не уверен, почему я не могу передать id в 'xargs docker exec'. – scubbo

Смежные вопросы