Faits : A. Les époux A._ et B._ sont domiciliés à U._ (VS). Depuis 2010, A._ est employé auprès de la société V._ AG à W._ (VS) en qualité de chauffeur grutier. Dans leur déclaration fiscale pour l'année 2014, ils ont fait valoir un montant de 11'916 fr. au titre de dépenses professionnelles de l'époux, tant pour l'impôt cantonal et communal que pour l'impôt fédéral direct. Ce montant comprenait des frais de déplacement en véhicule privé, à hauteur de 8'316 francs. B. Par décision de taxation du 30 mai 2015, le Service cantonal des contributions (ci-après: le Service cantonal) n'a admis, au titre de dépenses professionnelles de l'époux, qu'un montant de 7'295 francs. Dans leur réclamation du 1 er juillet 2015, les contribuables ont demandé que les frais de déplacement en véhicule privé déclarés soient admis en déduction. Le Service cantonal a rejeté la réclamation (décision sur réclamation du 16 novembre 2017), considérant que n'étaient déductibles en l'espèce que les frais de déplacement d'un trajet mixte combinant l'utilisation de la voiture entre le domicile du contribuable et la gare de X._ (VS) et celle du train entre X._ et W._. Par arrêt du 8 novembre 2018, la Commission de recours en matière fiscale du canton du Valais (ci-après: la Commission de recours) a rejeté le recours formé par les contribuables contre cette décision sur réclamation. C. Agissant par la voie du recours en matière de droit public, A._ demande au Tribunal fédéral, sous suite de frais et dépens, d'annuler la décision du 8 novembre 2018 de la Commission de recours et d'admettre les dépenses professionnelles déclarées pour la période fiscale 2014; subsidiairement, d'annuler la décision du 8 novembre 2018 de la Commission de recours et de renvoyer la cause à l'instance précédente pour nouvelle décision dans le sens des considérants. La Commission de recours renvoie à son arrêt et conclut au rejet du recours. Le Service cantonal et l'Administration fédérale des contributions se réfèrent à l'arrêt attaqué et concluent au rejet du recours.