A suicide bomber has killed at least 30 people and wounded nearly 20 others on a bus in Baghdad .