Родился 11 марта 1917 в поселке Южа (с 1925 года — город) Ивановской области в семье служащего, бухгалтера. Русский. Член ВКП(б)/КПСС с 1942 года. Рано остался без отца. Окончив 7 классов, пошёл работать ремонтником прядильных машин на фабрику. Затем поступил в Суздальский техникум механизации сельского хозяйства.
В 1935 году добровольцем пошёл в Красную Армию. В 1938 году окончил Краснодарской артиллерийское училище. Молодой офицер Соколов командовал сначала взводом, затем батареей. Участвовал в освободительном походе советских войск в Западную Украину и Западную Белоруссию 1939 году.
Участник Великой Отечественной войны с июня 1941 года. Боевое крещение старший лейтенант Соколов получил на третий день войны под городом Дубно, в Западной Украине. Находясь в артиллерийской разведке, на переднем крае, он засекал вражеские цели, готовил исходные данные, передавал их на артиллерийские позиции. Вскоре он был назначен начальником разведки артиллерийского полка. Во время обороны города Киева был направлен в Днепровскую флотилию для управления огнем артиллерийских орудий кораблей по наступающему противнику. Отступал с боями до Волги.
Во время боев за Сталинград капитан Соколов был уже начальником штаба 397-го противотанкового полка 62-й армии. Рубеж, который оборонял полк, стал непреодолимым барьером, о который разбивались все вражеские атаки. Петляя по улицам, тягачи выходили на открытые позиции и орудия открывали внезапный огонь. Капитан Соколов не раз сам становился к орудиям, на его счету было несколько сожжен гитлеровских танков. За храбрость и мужество в боях при защите города на Волге и за участие в разгроме окруженной немецкой группировки капитан Соколов был награждён орденами Красной Звезды и Отечественной войны 2-й степени. А полк стал гвардейским.
После Сталинградской битвы Соколов был назначен начальником штаба артиллерийской бригады дивизии прорыва резерва Главного командования. Он сражался на Волховском, Брянском, Воронежском, 1-м Украинском и 1-м Белорусском фронтах. Громил немцев, будучи в должности командира 1430-го артиллерийского полка в составе 1-й гвардейской танковой армии генерала Катукова, который всегда выделял его полк в состав передового отряда армии для преследования и разгрома отступающего противника в его тылах.
При форсировании реки Одер воины полка на подручных средствах, надувных лодках и паромах под покровом ночи переправились на другой берег, захватили плацдарм и удерживали его трое суток, обеспечивая переправу других частей армии.
Подполковник Соколов отличился в битве за Берлин. Полк обеспечивал огнём наступление танковых и стрелковых частей, метким огнем уничтожил железнодорожный эшелон. Командир, находясь в боевых порядках подразделений, организовывал чёткое взаимодействие с танками.
28 апреля 1945 года в бою за мост через Ландвер-канал заменил выбывшего из строя наводчика и уничтожил закопанный в землю танк противника, преграждавший путь штурмовым группам. В жаркой схватке он был ранен, но не покидал поле боя до тех пор, пока противник не был выбит из прилегающих к каналу зданий и мост не перешёл в наши руки. Полк участвовал в штурме рейхсканцелярии и рейхстага. Несколько суток артиллеристы Соколова не отходили от своих орудий. В двух кварталах от рейхстага подполковник был снова тяжело ранен, потерял сознание. Очнулся только в госпитале на четвёртые сутки.
В 1951 году окончил Военную академию имени М. В. Фрунзе. Был начальником военной кафедры горнометаллургического института в городе Орджоникидзе (ныне Владикавказ). С 1968 года полковник Соколов — в запасе. Жил в Киеве.
Умер 16 июля 1977 года. Похоронен на Лукьяновском военном кладбище города Киева.