gitlab runner executor shell vs docker