-
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