lendo stdout no pipeline usando “-” falha para “docker exec”

2

Eu quero iniciar um terminal bash para minha instância do Docker, canalizando o primeiro ID do contêiner para o executável do docker:

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

O% final - deve passar o stdout do processo de pipeline anterior como uma variável. Mas em vez disso eu recebo:

Error response from daemon: no such id: -

Eu acho que o programa docker interfere em como o shell lê os argumentos.

Existe alguma maneira de contornar isso? (através do programa docker ou de uma solução shell).

Informações adicionais

Esta subpinha:

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

produz saída:

7dae6507d01a

qual está correto. Então não há problemas aqui.

    
por Sridhar-Sarnobat 07.01.2016 / 01:23

1 resposta

2

- não é analisado pelo shell, é apenas um argumento que alguns comandos reconhecem como "read from stdin". Aparentemente, o docker não faz isso.

Você precisa usar xargs para passar o id como um argumento real aqui. Isso deve funcionar:

 docker ps | head -2 | grep -v CONTAINER | cut -d' ' -f1 | xargs -I '{}' docker exec -i -t '{}' bash
    
por 07.01.2016 / 07:36