◈이책에서다루는내용◈
◆도커의주요개념인이미지,컨테이너,레지스트리,스웜클러스터이해하기
◆윈도우10,윈도우서버2019,클라우드에서도커실행하기
◆여러컨테이너에걸쳐분산된솔루션배포,모니터링
◆도커스웜에서컨테이너를실행해항상사용가능한상태를유지하고장애상황을자체적으로해결할수있도록구현하기
◆도커플랫폼의심층적보안완벽이해와애플리케이션보안강화
◆지속적배포파이프라인을도커안에서젠킨스,Git으로생성및실행하기
◆VisualStudio를사용해Docker컨테이너안의애플리케이션디버깅하기
◆조직안에서도커도입계획수립하기
◈이책의대상독자◈
기존단일애플리케이션을다시만들지않고현대화할때,배포를프로덕션으로원활하게전환하거나데브옵스또는클라우드로이동할때도커가큰도움이될것이다.이책으로도커관련견고한지식과기반을얻을수있으며필요한모든상황에폭넓게대입할수있을것이다.
◈이책의구성◈
1장,‘윈도우에서Docker시작하기’에서는도커런타임을소개하고윈도우10및윈도우서버2019에서도커를실행해애저가상컴퓨터에서도커를실행하는방법을알아본다.
2장,‘Docker로애플리케이션컨테이너이미지만들고실행하기’에서는컨테이너이미지즉컨테이너를실행할수있는모든호스트에서같은방식으로실행되는모든종속성있는패키지애플리케이션에초점을맞춘다.간단한웹사이트의Dockerfile로컨테이너이미지를만든후윈도우에서실행하는방법을확인해본다.
3장,‘컨테이너로.NETFramework및.NETCore애플리케이션개발하기’에서는기존.NETFramework애플리케이션을컨테이너로만들어윈도우컨테이너에서실행하는방법을알아보고모든운영체제에서실행할수있는새로운.NETCore애플리케이션을같은접근방법으로활용하는방법을알아본다..NETCore애플리케이션은윈도우와리눅스에서모두잘실행되며이식하기쉬운컨테이너로애플리케이션을옮길때이상적으로적합한기술이다.
4장,‘Docker레지스트리와이미지공유하기’에서는제품팀의공식이미지,공공커뮤니티이미지,개인저장소의이미지등구축된이미지를공유할수있는도커허브를다룬다.개발중인이미지를게시하는방법,내부사용을위해사설도커레지스트리를실행하는방법그리고추가기능이있는상업용레지스트리솔루션을알아본다.
5장,‘컨테이너중심솔루션설계채택하기’에서는4장의내용을바탕으로다양한고품질컨테이너이미지를사용해기성품이미지와맞춤형이미지를혼합해분산솔루션을설계하는방법을간단하게보여준다.윈도우컨테이너에서일래스틱서치와키바나의새로운분석기능과함께레거시모놀리식애플리케이션을분해하고홈페이지구성요소를새로대체하며RESTAPI를추가하는방법을배운다.
6장,‘DockerCompose를사용한분산솔루션구성하기’에서는애드혹(Ad-hoc)분산솔루션을Docker네트워크와함께DockerCompose를사용해배포가능한패키지로빌드하는방법을알아본다.이로써컨테이너가DNS를사용해통신할수있으며DockerComposeYML파일구조와DockerCompose의실행방식을설명한다.또한도커네트워크의개요로컨테이너를서로연결하는것이얼마나쉬운지도알수있을것이다.
7장,‘Docker스웜을사용한분산솔루션오케스트레이션’에서는Docker스웜을사용한프로덕션준비클러스터구축방법을설명하며도커에들어있는새로운클러스터링기술에중점을둔다.윈도우에서실행되는스웜클러스터를설정하고라우팅메시의작동방식을알아보며분산애플리케이션을스웜서비스로배포해서비스검색기능을사용하고안정적으로작동하게만드는방법을배운다.
8장,‘Docker기반의솔루션과DTR의관리및모니터링하기’에서는분산Docker솔루션관리방법을설명한다.윈도우컨테이너와함께기존관리도구를사용할수있다.또한Docker스웜에서컨테이너를시각화하기위해무료/상용도구를사용해컨테이너화된애플리케이션을관리하는새로운방법을알아보고실행중인서비스의순차업데이트방법을배운다.
9장,‘Docker의보안위험및이점이해하기’에서는도커보안의주요특징즉하나인노드에여러컨테이너가실행될때발생할수있는위험(즉,공격자가하나의컨테이너를망가뜨리고다른컨테이너에접근할수있는상황)을알아보고이러한문제를최소화하는방법을설명한다.Docker허브와신뢰할수있는레지스트리에들어있는이미지에대한보안취약요소검색기능으로도커가보안을강화하는방법을배우고이미지내부의소프트웨어가내포한보안문제를다룬다.
10장‘Docker로만드는지속적배포파이프라인구축하기’에서는모든것이자동화된데브옵스작업흐름에서도커를다룬다.소스제어및빌드를위해컨테이너에서Git서버및젠킨스자동화서버를실행하는도커를사용해전체배포파이프라인을구축한다.파이프라인은코드가푸시될때새로운컨테이너이미지를만들고자동화된테스트를실행하며테스트환경에배포한다.
11장,‘애플리케이션컨테이너디버깅및메트릭보기’에서는컨테이너를빌드하거나실행하는도중발생하는문제를해결하는방법을알아본다.다양한버전의VisualStudio에서도커를사용하는방법과애플리케이션및컨테이너의메트릭을확인해현재상태를대시보드에표시하는방법을알아본다.또한도커가개발자의버그수정작업방식을개선하는방법도알아본다.
12장,‘잘아는것을컨테이너화하기-도커구현을위한지침’에서는실제사례에초점을맞춘다.도커의비즈니스사례를제시하고비즈니스사례가충족되는지확인하는방법을설명한다.개념증명에서기존소프트웨어스택을컨테이너화하는방법과도커에서실행할수있는애플리케이션에서버티컬슬라이스(기능중일부를추출해부분적으로만들어보는것)를추출해마이크로서비스아키텍처로이동하는방법을알아본다.
부록1,‘원서출간이후바뀐내용의업데이트’에서는원서가출간된후업데이트된도커및관련기술,그중에서도윈도우컨테이너와연관된부분을주로소개하며바뀐내용에맞춰독자가검토해야할내용을담고있다.
부록2,‘윈도우컨테이너개발환경구축하기’에서는윈도우컨테이너개발환경을서버가아닌개발자컴퓨터환경에구축할수있는방법을상세하게설명한다.
옮긴이의말
컨테이너기반의기술은이제업계에서사실상의표준이자기본기술이됐다.최신기술을다루거나,최신기술에관심이있는사람이라면누구나기본적인내용으로학습하고인지하는기술이됐다.그리고이런컨테이너를가장활용하기쉽고편리하게만들어주는도구는단연도커라는것을부정하는사람이없다.
컨테이너기술덕분에,그결과이전에는찾아볼수없었던수준의강력함과유연성을이뤄내며,IT업계에새로운가능성과비전을제시하고있다.한서버에서호스팅할수있는애플리케이션의수를크게늘려더많은애플리케이션을동시에효율적이면서도체계적으로호스팅할수있도록해주고,동일운영비용대비더많은작업과서비스를가능하게만들었다.
도커는리눅스를기반으로개발돼온기술이다.시대의흐름에맞춰윈도우를개발하는마이크로소프트역시이런도커의흥미로운움직임을적극적으로운영체제에수용해윈도우에서도컨테이너런타임의이점을충분히누릴수있도록새로운기술스택을추가했고,그것이바로이책에서다루는윈도우컨테이너기술이며,도커역시리눅스컨테이너뿐아니라윈도우컨테이너를호스팅하거나윈도우컨테이너이미지를빌드할수있도록기능을제공하고있다.
안타까운점은,도커가리눅스에국한된기술이라고굳게믿게할만한현실적인제약사항이꽤강력하게작용한다는것이다.리눅스컨테이너처럼쉽게개발자의컴퓨터에설치해서쓸수없거나,기대한성능을이끌어내기위해알아야할사전조건이까다로운편이다.그리고윈도우의상징처럼여겨지는GUI애플리케이션을컨테이너화할수없다는것때문에금새흥미를잃는경우도많을것이다.그러나이는도커의태생과방향성을생각해보면당연한것이며,다른한편으로윈도우기반애플리케이션의입장에서는불공평한면도있다.
하지만컨테이너런타임을들여와얻을수있는이점은이런불공평함을가볍게뛰어넘고도남을정도로매력적이고강력하다.필자는데브시스터즈에서데브옵스엔지니어로일하면서,윈도우컨테이너를지원하는쿠버네티스로개발환경전체를효율화하고,동시에프로덕션환경에서윈도우컨테이너로게임서비스를구동할수있도록인프라를구축해서성공적으로게임서비스를호스팅하는경험을얻을수있었다.
컨테이너런타임을도입해서관리할수있다면설치와배포과정에서발생하는인적오류를원천봉쇄할수있을뿐아니라,문제가발생할경우에는언제든컨테이너를다시시작하거나재배포하는것만으로빠르게문제를복구하고,중단시간을최소화할수있는방법을제공한다.그러면서도기존윈도우서버애플리케이션의이점은약간의주의를기울이는것만으로도얼마든지호환성을맞춰대응할수있으니적극적으로고려해볼만한매력적인기술이라고자신있게말할수있다.
실무에서윈도우컨테이너를도입하기를원하거나,자세한내용을알기원하는모든이에게이책은좋은시작점이될것이다.하지만윈도우컨테이너를도입하면서익숙해지려면실제로는알아야할내용이적지않은것또한사실이다.그래서원서에서는자세히다루지않았으나,필자가실무에서윈도우컨테이너를도입하면서경험했던실수하기쉬운내용들을따로담아약간의가이드를추가했으니,시작단계에서발걸음을떼지못한독자는꼭읽어보기를권한다.
◈옮긴이의말◈
컨테이너기반의기술은이제업계에서사실상의표준이자기본기술이됐다.최신기술을다루거나,최신기술에관심이있는사람이라면누구나기본적인내용으로학습하고인지하는기술이됐다.그리고이런컨테이너를가장활용하기쉽고편리하게만들어주는도구는단연도커라는것을부정하는사람이없다.
컨테이너기술덕분에,그결과이전에는찾아볼수없었던수준의강력함과유연성을이뤄내며,IT업계에새로운가능성과비전을제시하고있다.한서버에서호스팅할수있는애플리케이션의수를크게늘려더많은애플리케이션을동시에효율적이면서도체계적으로호스팅할수있도록해주고,동일운영비용대비더많은작업과서비스를가능하게만들었다.
도커는리눅스를기반으로개발돼온기술이다.시대의흐름에맞춰윈도우를개발하는마이크로소프트역시이런도커의흥미로운움직임을적극적으로운영체제에수용해윈도우에서도컨테이너런타임의이점을충분히누릴수있도록새로운기술스택을추가했고,그것이바로이책에서다루는윈도우컨테이너기술이며,도커역시리눅스컨테이너뿐아니라윈도우컨테이너를호스팅하거나윈도우컨테이너이미지를빌드할수있도록기능을제공하고있다.
안타까운점은,도커가리눅스에국한된기술이라고굳게믿게할만한현실적인제약사항이꽤강력하게작용한다는것이다.리눅스컨테이너처럼쉽게개발자의컴퓨터에설치해서쓸수없거나,기대한성능을이끌어내기위해알아야할사전조건이까다로운편이다.그리고윈도우의상징처럼여겨지는GUI애플리케이션을컨테이너화할수없다는것때문에금새흥미를잃는경우도많을것이다.그러나이는도커의태생과방향성을생각해보면당연한것이며,다른한편으로윈도우기반애플리케이션의입장에서는불공평한면도있다.
하지만컨테이너런타임을들여와얻을수있는이점은이런불공평함을가볍게뛰어넘고도남을정도로매력적이고강력하다.필자는데브시스터즈에서데브옵스엔지니어로일하면서,윈도우컨테이너를지원하는쿠버네티스로개발환경전체를효율화하고,동시에프로덕션환경에서윈도우컨테이너로게임서비스를구동할수있도록인프라를구축해서성공적으로게임서비스를호스팅하는경험을얻을수있었다.
컨테이너런타임을도입해서관리할수있다면설치와배포과정에서발생하는인적오류를원천봉쇄할수있을뿐아니라,문제가발생할경우에는언제든컨테이너를다시시작하거나재배포하는것만으로빠르게문제를복구