Macdonald joined the Royal Navy in 1833. He served in the Eighth Xhosa War as Commander of HMS Ferret. Promoted to Captain in 1854, he commanded HMS Hogue, HMS Arethusa and then HMS Bellerophon.
He was appointed Second-in-Command of the Channel Fleet in 1872 and from 1873 he became the 21st chief of the Clan Macdonald of Clanranald.
He was made Commander-in-Chief, East Indies Station in 1875 and Commander-in-Chief, The Nore in 1879. He retired in 1884.