본관은 남원(南原). 자는 경보(敬甫). 부사정 양종임(梁鍾任)의 아들이다. 이항로(李恒老)의 문인으로 무예를 익혔다.
1848년(헌종 14) 무과에 급제하여 선전관이 되었고, 철종 때 참상관(參上官)에 올랐다. 1865년(고종 2) 제주목사로 부임된 후 전판관 백기호(白基虎)의 탐학을 징계할 것을 보고해 제주 도민의 칭송을 받았다. 이 해 가을 극심한 태풍 피해를 복구하는 한편, 진휼을 요청하는 등 선정을 베풀어 한 해를 더 제주도에서 보냈다. 1866년 어영청의 천총(千摠)으로 준천사(濬川司)의 도청(都廳)을 겸하다가 병인양요를 당해 정족산성(鼎足山城)의 수성장(守城將)이 되었다.
순무중군(巡撫中軍) 이용희(李容熙)의 명령에 따라 별군관(別軍官) 이현규(李鉉奎)와 함께 17명의 초관(哨官)과 경초군(京哨軍) 121명, 표하군(標下軍) 38명, 포수 367명을 이끌고 광성진(廣城鎭)의 손돌(孫乭)목을 건너 정족산성을 지켰다. 10월 3일 프랑스함대의 로즈(Rose) 제독이 보낸 해군대령 올리비에(Ollibier) 부대 160명을 맞아 치열한 전투 끝에 프랑스군 6명을 죽이고 많은 부상자를 냈으며, 다수의 무기를 노획하는 전과를 세워 프랑스군이 패퇴하는 데 결정적인 역할을 하였다.
이 공로로 한성부좌윤에 임명되었다가 1869년 황해도병마절도사로 부임하였다. 병사로 재직중이던 1871년에는, 국방력을 강화하기 위해 신설한 별위사제도(別衛士制度)의 격려 방안으로 매년 도시(都試)를 시행하여 성적에 따라 우대하고 곡식과 면포로 포상하였으며, 이와 같은 치적이 인정되어 특별히 1년 더 병사로 임직하였다. 이듬해에는 당시 황해도 연안에 출몰하던 해적 일당을 체포하여 효수하기도 하였다.
1873년 어영대장에 임명되었고, 1874년 좌변포도대장을 지냈다. 1875년 2월 형조판서가 주어졌으나 실제로 부임하지는 않았던 것 같다. 8일 뒤 금위대장이 되었다. 1876년 강화도조약 당시에는 김병학(金炳學) · 홍순목(洪淳穆) · 이용희 등과 함께 개국을 반대하는 척화론을 주장하였다. 1882년 임오군란 이후 집권한 흥선 대원군은 명성황후의 상을 치르는 한편, 척족 세력을 제거하는 인사를 단행하면서 삼군부(三軍府)를 다시 설치하였는데, 이 때 조영하(趙寧夏) · 김병시(金炳始) · 김기석(金箕錫) 등과 함께 지삼군부사(知三軍府事)에 임명되었다. 1884년 공조판서에 임명되었으며 1887년 독련사(督鍊使)가 되었다.
시호는 충장(忠莊)이다.