Как определить оптимальное количество контейнеров в зависимости от железа?
боже мой, сюда то зачем контейнеризацию притянули?

тебе нужен ОДИН контейнер в который передаешь что то типа
parallel -j N < list_commands.cmd
где N это количество одновременных потоков а в list_commands.cmd в каждой строчке по команде
wget http ... -o fileXXX.log -O filename

wget тратит очень мало ресурсов, ты можешь запустить тысячу процессов и это потребует от силы гигабайт ram и совсем не затронет процессор, поэтому лимит на количество подключений определяет удаленный сервер и ширина канала провайдера

напиши простенькое приложение, которое будет формировать список команд (можно даже на лету и передавать через пайпы), приписывать каждой ссылке сввое имя файла и свой лог файл, смотреть какие файлы уже созданы и какие ошибки в логах
Правильный (ИМХО и AFAIK) хотя и непопулярный ответ - надо проверять\мерять производительность при разном кол-че контейнеров. Теория тут не очень помогает. Скорее всего, как уже сказали, оптимальное кол-во контейнеров будет намного больше чем кол-во процессоров.