2

Я хочу запустить терминал bash для моего экземпляра Docker, отправив первый идентификатор контейнера в Docker Exec:

docker ps | head -2 | grep -v CONTAINER | cut -d' ' -f1 | docker exec -i -t - bash

Последний - предполагается передать стандартный вывод предыдущего конвейерного процесса как переменную. Но вместо этого я получаю:

Error response from daemon: no such id: -

Я предполагаю, что программа docker мешает тому, как оболочка читает аргументы.

Это можно обойти? (либо через программу docker либо через оболочку).


Дополнительная информация

Этот субпайплайн:

docker ps | head -2 | grep -v CONTAINER | cut -d' ' -f1 

производит вывод:

7dae6507d01a

что правильно. Так что нет проблем здесь.

1 ответ1

2

- не обрабатывается оболочкой, это просто аргумент, который некоторые команды распознают как "чтение из стандартного ввода". Видимо, докер этого не делает.

Вам нужно использовать xargs для передачи идентификатора в качестве реального аргумента. Это должно работать:

 docker ps | head -2 | grep -v CONTAINER | cut -d' ' -f1 | xargs -I '{}' docker exec -i -t '{}' bash

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .