Provavelmente porque o netcat sai logo após obter um fim de arquivo em sua entrada padrão. Experimente
(echo 'HEAD /'; sleep 5) | nc 172.17.0.1 3128
para manter a entrada local do netcat aberta por tempo suficiente
para ler os dados da rede e escrevê-los na saída padrão.
O 5
é o número de segundos para atrasar.
O Netcat tem uma opção para lidar com isso. Se você especificar um tempo limite de parada negativo, ele aguardará a conexão de rede fechar em vez de encerrar após EOF em stdin:
echo 'HEAD /' | nc -q -1 172.17.0.1 3128