Windows Server Container 시작하기 [Windows와 Docker의 새로운 만남]
- 원서명Learning Windows Server Containers: Build, package, and deploy applications as easily manageable and shippable containers (ISBN 9781785887932)
- 지은이스리칸스 마히라지(Srikanth Machiraju)
- 옮긴이백승주, 김세준, 최정현, 최한홍
- ISBN : 9791161750972
- 35,000원
- 2017년 12월 28일 펴냄
- 페이퍼백 | 480쪽 | 188*235mm
- 시리즈 : acorn+PACKT
책 소개
요약
대한민국과 같이 IT에 대한 요구 사항으로 기민성 및 유연성을 요구하는 나라도 많지 않다. 이러한 요구사항에는 최근 이슈가 되는 Docker가 제격이다. 이 책은 Docker에 대한 세부사항과, Windows Container라는 이름으로 Docker를 품은 Windows Server와 Microsoft Azure에 대해 다룬다. 또한 역시나 최근 화두가 되고 있는 마이크로서비스를 구현하기 위한 Orchestrator와 클러스터링에 대해서도 함께 다루고 있다.
추천의 글
최근 들어 Container는 점점 고급화된 방식으로 가상 시스템 서비스를 제공하고 있다. 마이크로서비스(Microservice)와 연계돼 격리되고, 자체적인 애플리케이션 서비스를 제공한다. Container는 인프라스트럭처에서 솔루션을 개발 및 배포할 수 있는 혁신적인 방향을 제시한다. Docker는 오픈소스 기반으로 Container를 만들고 Container 클러스터를 구성하기 위한 인기 있는 기술이 됐다. 이는 수백 개 혹은 수천 개의 Container를 실제 서버에 구현함으로써 서비스를 최적화하거나 유연하게 운영할 수 있는 기능을 제공한다. 필요한 모든 기능을 갖고 있으면서도 개별 Container 내에서 다른 운영체제(리눅스, Windows 등)를 사용할 수 있다는 점은 모듈식 시스템을 만드는 데 용이하다. 마이크로소프트 Windows와 Microsoft Azure, 애저 클라우드 플랫폼은 지속적으로 발전하고 있어 전 세계 기업의 IT 시스템 내에서 현재 디지털 트랜스포메이션(Digital Transformation)을 위한 시스템을 만드는 데 중요한 역할을 하고 있다. 수백만 명(또는 수천만 명)의 모바일 사용자가 사용하는 엔터프라이즈 애플리케이션이나 수십억 개의 IoT 센서를 사용하는 애플리케이션이 있더라도 Container 모델을 통해 Windows를 플랫폼으로 사용할 수 있으며 필요한 만큼 확장이 가능한 Microsoft Azure 클라우드를 ,사용할 수도 있다.
배포와 잦은 릴리스는 Container 기술에 의해 발전한 또 다른 영역이다. 코드 형태로 인프라스트럭처(Infrastructure as a code)를 만들어 개발, 배포, 운영을 자연스럽게 연결하는 DevOps는 오늘날 솔루션을 만드는 빠른 방법의 일부가 됐다. Container 형태를 이용하는 것은 변경이 어려운 인프라스트럭처로 솔루션을 쉽고 효율적으로 배포할 수 있게 해준다.
이 책은 앞서 언급한 모든 주제를 다루고 있다. Windows Container를 이해하고 다른 유형의 시스템을 만들 때, 사용할 Windows와 Microsoft Azure 개발자의 도구들도 다룬다. DevOps의 연동도 주제로 다룸으로써 애플리케이션 개발 방법론을 구현하는데 유용하다.
저자는 노련한 개발자며 아키텍트(Architect)다. 대규모의 고객을 위한 최신 기업 솔루션 구축 경험과 복잡한 요소를 함께 다루는 실용적인 모범 사례들을 모든 페이지에 담으려고 노력했다. 그의 컨설팅 경험과 수많은 기술적 경험을 담아 Windows Container를 활용한 애플리케이션 개발에 대한 구체적인 방법론을 제시하고, 이는 클라우드 기반으로 확장성이 요구되는 기업용 애플리케이션 개발을 담당하는 개발자들, 아키텍트 그리고 운영 팀에게 매우 유용한 도구가 될 것이다.
Container와 마이크로서비스에 대한 소개부터 시작해 저자는 간단한 ‘Hello World’ Container에서 실용적인 사례까지 개발자들을 깊이 있는 여정으로 안내한다. 이는 SQL 서버, 레디스 캐시(Redis Cache), 저장소 볼륨, 지속적인 개발 및 배포를 위한 VSTS, 리소스 관리 및 통찰력(Insight)를 활용해 복잡한 기업 애플리케이션을 개발할 수 있게 도움을 줄 것이다.
/ 리테쉬 모디(Ritesh Modi)
/ 마이크로소프트 인도지사, 시니어 기술 전도사(Senior Technology Evangelist)
이 책에서 다루는 내용
■ Visual Studio 2015, Docker 및 PowerShell을 이용해 Windows 10(데스크톱)과 Microsoft Azure에 Windows Container 형태로 ASP.NET 웹 애플리케이션을 빌드 및 배포
■ Windows Server Core 기본 OS 이미지와 Docker 명령어를 통해 사용자 지정 이미지 생성 및 관리, Docker Hub로 이미지 게시, 이미지 태그, dockerfile 작성 등
■ Redis Cache Container와 SQL Server Container를 저장소 볼륨과 함께 사용해 엔터프라이즈 기업 내 프로덕션에서 사용할 수 있는 Container 환경 생성, 사용자 지정 Container 네트워크 설정, VSTS, Microsoft Azure 및 Git을 이용한 CI 및 배포 파이프라인
■ Windows 내 Docker Compose를 사용한 복합 Container 환경 배포
■ 마이크로소프트의 최신 서버 플랫폼인 Nano Server를 이용해 애플리케이션을 빌드하는 방법
■ Windows PowerShell을 이용해 사용자 지정 Nano Server 이미지와 Nano Server 내 Container를 만드는 방법
■ PowerShell Core, DSC 이용 설정
이 책의 대상 독자
이동 가능한 앱을 만든 후, 코드의 변경을 거의 하지 않고 원하는 곳(노트북, 서버 그리고 공용/사설 클라우드)에서 구동할 수 있는 Windows Server Container를 이용하려는 개발자다. 개발자들은 높은 품질의 애플리케이션을 만들고 전달할 수 있을 것이다.
Windows Container는 개발자와 관리자 모두에게 큰 영향을 줄 것이므로, 이 책은 사용과 유지 보수가 용이한 인프라스트럭처를 준비하는 IT Pro, 또는 DevOps 엔지니어에게 유용하다. IT Pro는 서버당 애플리케이션의 밀집도를 높여 리소스 사용률을 최적화할 수 있을 것이다. 이 책에서 다루는 개념은 DevOps에서 Container 개념 정립, 개발 환경에서 프로덕션 환경으로 손쉽게 개발된 코드를 Container 형태로 게시하는 작업 연결에 도움이 될 것이다.
이 책의 구성
1장. '가상화'에서는 여러 가상화의 각기 다른 수준에 대해 소개하고, 각 가상화 유형에 따른 도전 과제와 가상화 플랫폼으로서의 Container, 컨테이너화된 애플리케이션 운영의 장점, 도구 지원, 시장 내의 다른 Container 플랫폼에 대해 알아본다.
2장. '첫 번째 Container 배포'에서는 개발 환경을 구축하는 방법을 알아보며, Docker 용어에 대한 이해, Docker Hub에서 이미지 설치 Docker CLI와 dockerfile 작성을 활용한 Windows Container 사용자 지정 이미지 생성 방법을 알아본다.
3장. 'Container 이미지 작업'에서는 Container 목록 확인, 시작/중지, 사용하지 않는 Container의 제거 혹은 Windows Server 환경에서 Docker CLI를 활용한 이미지 사용 등 일반적인 Container 관리 작업에 대해 알아본다.
4장. 'Container 애플리케이션 개발'에서는 Visual Studio 2015, .NET 코어, 그리고 C#을 활용한 ASP.NET 코어 웹 애플리케이션을 Windows Server 2016 서버 코어에서 동작하는 Windows Container에 PowerShell과 Docker CLI를 사용해 생성 배포하는 방법을 알아본다.
5장. 'Container 애플리케이션 배포'에서는 마이크로소프트 ARM(Azure Resource Manager) 템플릿과 PowerShell, Container 호스트를 위한 원격 관리 설정, Windows Container와 Hyper-V Container로 애플리케이션 원격 배포, 소프트웨어 부하 분산 장치 설정 등을 활용해 Windows Server Container 환경을 생성하는 방법을 알아본다.
6장. '저장소 볼륨'에서는 Docker 볼륨을 활용한 파일 및 저장소 기반의 Container 생성 및 마이크로소프트 SQL 서버를 활용한 관계형 데이터베이스 Container 등을 만드는 방법을 알아본다.
7장. '레디스 캐시 Container'에서는 레디스(Redis)와 저장소 볼륨을 활용해 영구적인(Persistent) 레디스 캐시(Redis Cache) Container를 만드는 방법을 알아본다.
8장. 'Container 네트워크'에서는 Windows Container 네트워크, 다른 네트워킹 모드, 이를 활용한 사용자 지정 Container 네트워크의 생성과 해당 네트워크에 Container 배포 방법 등과 같은 Windows Container 네트워크에 대해 알아본다.
9장. '지속적인 통합과 배포'에서는 Microsoft Azure, Docker Hub와 Git상의 Visual Studio 팀 서비스(Team Services, TFS 온라인)를 활용한 Container 애플리케이션의 지속적인 통합과 배포 파이프라인에 대해 알아본다. 개발을 위한 사용자 지정 서버 구축과 패키징, 그리고 Container를 Windows Container 호스트에 릴리스하기 위한 방법도 알아본다.
10장. '리소스 할당 관리 및 REST API'에서는 Container 리소스 활용, 생성, 그리고 Postman과 C#으로 Docker REST API를 이용한 Container의 생성 및 관리, 이미지 최적화 전략 및 Container와 Container 호스트에서 사용 가능한 모니터링 옵션에 대해 알아본다.
11장. '복합 Container와 클러스터링'에서는 Docker 컴포스(Compose)를 이용해 다중 Container 배포 조정(Orchestrate), 다중 Container 환경에 대한 확장 설정, 그리고 Docker 컴포스 서비스 정의를 작성하는 방법을 알아본다. 또한 Docker 스웜(Swarm)과 ACS(Azure Container Service)를 활용해 클러스터를 관리하는 방법을 알아본다.
12장. 'Nano Server'에서는 Windows Nano Server에 대한 소개로, PowerShell을 활용한 사용자 지정 Nano Server 이미지 구성과 Nano Server로 Container 배포, Nano Server에서의 Container 관리, PowerShell DSC를 활용한 Nano Server 구성 방법을 알아본다.
목차
목차
- 1장. 가상화
- 마이크로소프트 가상화의 역사
- 가상화 종류의 이해
- 하드웨어/플랫폼/서버 가상화
- 저장소 가상화
- 네트워크 가상화
- OS 가상화
- 가상화의 단점
- 컴퓨터 부팅 시간
- 낮은 리소스 사용률
- 운영비용
- 애플리케이션 패키징 및 배포
- 컨테이너화 소개
- Container의 몇 가지 주요 구현
- Docker
- Windows Server Container
- Windows Server Container의 탄생
- Windows Server Container 버전
- Hyper-V Container
- 다른 Container 유형이 있는 이유
- Container 용어
- Microsoft Azure 내 Windows Server Container
- 컨테이너화와 서버 가상화의 비교
- 클러스터 관리
- Docker 스웜
- 쿠버네티스
- DC/OS
- 도구 지원
- Docker용 Visual Studio 도구
- Visual Studio Code
- Visual Studio 온라인
- Windows용 Docker
- Windows용 Docker 툴박스
- Container 형태를 이용하는 기타 제품
- Turbo
- Rocket
- 요약
- 요약
- 2장. 첫 번째 Container 배포
- 개발 환경 준비
- Windows 10에서의 Container
- 온프레미스 환경에서의 Windows Server Container
- Microsoft Azure에서의 Windows Server Container
- Windows Server 2016의 Container 옵션
- Microsoft Azure에서 Windows Server 2016 가상 컴퓨터 생성
- 기본 OS 이미지 설치와 확인
- Windows Server Container 개발
- Docker Hub에서 이미지 가져오기
- Windows Container 이미지 준비
- Docker에서 웹 애플리케이션 실행
- Container 생성
- dockerfile 분석
- Docker 서비스 시작과 중지
- 요약
- 요약
- 3장. Container 이미지 작업
- 이미지 목록
- 이미지 검색
- docker pull
- docker run
- 분리 모드와 포그라운드 모드 비교
- Container 이름
- 격리 기술
- dockerfile 이미지의 기본 값 재정의
- docker build
- 빌드 컨텍스트
- Docker 이미지 빌드
- dockerignore
- docker tag
- docker commit
- docker exec
- docker push
- Container 또는 이미지 정리
- 요약
- 4장. Container 애플리케이션 개발
- 개발 환경 설정
- 닷넷 코어와 ASP.NET 코어 이해
- ASP.NET 코어 아키텍처
- ASP.NET 애플리케이션 호스팅
- ASP.NET 코어 애플리케이션 개발
- 뮤직 스토어 애플리케이션
- Windows Server Container로 ASP.NET 코어 애플리케이션 배포
- Docker화된 애플리케이션
- 점 연결
- 개발자 컴퓨터에서 테스트 및 실행
- Windows Server Container 내의 IIS를 이용해 ASP.NET 코어 호스팅
- Windows Server Container를 이용해 ASP.NET 4.5 애플리케이션 개발
- Docker화된 ASP.NET 4.5 웹 애플리케이션
- 점 연결
- Windows Server Container 네트워킹
- 요약
- 5장. Container 애플리케이션 배포
- ARM을 사용해 Microsoft Azure에 가상 컴퓨터 배포
- 원격 연결을 위한 가상 컴퓨터 구성
- 원격 Docker 호스트 구성
- docker.pid
- dockerd 구성 옵션
- Container 원격 배포
- 부하 분산 설정
- Hyper-V Container 배포
- 사전 요구 사항
- Hyper-V Container에서 Music Store를 실행하는 순서
- 이름 없는 이미지
- 요약
- 6장. 저장소 볼륨
- 저장소 볼륨
- Docker 볼륨
- 공유 볼륨
- 뮤직 스토어: 볼륨을 사용한 이미지 저장
- 볼륨 삭제
- 관계형 데이터베이스와 SQL Server Container
- 뮤직 스토어 : SQL 서버 Container를 사용해 데이터 저장
- 요약
- 7장. 레디스 캐시 Container
- 레디스 캐시 Container 생성
- 레디스 이미지와 Container 생성
- 레디스 캐시 Container 운영
- RDM(Redis Desktop Manager)
- 레디스 Container 게시
- 영구적인 레디스 Container
- 마스터-슬레이브 구성
- 레디스 Container를 뮤직 스토어에 연동
- 요약
- 8장. Container 네트워크
- Windows 네트워킹 소개
- Windows Container의 네트워크 관리 스택
- Container 네트워크 구성
- 정적 포트 매핑
- 네트워크에서 Container 연결 끊기
- WinNAT 네트워크 구현의 한계
- 네트워킹 모드
- Transparent 네트워크
- L2 브리지와 L2 터널
- 다중 Container 네트워크
- Container 네트워크 라우팅
- 단일 노드
- 다중 노드
- 뮤직 스토어의 다중 서브넷 배포
- Docker용 Windows PowerShell을 사용해 Docker 네트워크 관리
- 요약
- Visual Studio 팀 서비스 소개
- 지속적인 통합(CI)
- 지속적인 배포(CD)
- CI/CD 테스트
- 요약
- Container 리소스 할당
- 통찰력과 원격 분석
- dockerfile 최적화
- Docker REST API
- Docker .NET SDK
- 요약
- docker-compose 명령어를 사용해 다중 Container 배포 조정
- docker-compose 파일 레퍼런스
- Docker CLI 옵션
- Docker 스웜 아키텍처
- 스웜 클러스터 설정
- Docker 스웜의 기능
- 요약
- Nano Server에 대한 간단한 소개
- Nano Server에서 워크로드 구동 시 장점
- Microsoft Azure에 Nano Server 프로비저닝
- Windows 10에서 Nano Server 프로비저닝
- 패키지 관리
- Nano Server에서 .NET 코어 애플리케이션 배포
- PowerShell DSC를 이용해 구성 관리
- 나노 Container
- 요약