리눅스 컨테이너 LXC [도커와 클라우드 플랫폼의 시작]
- 원서명Containerization with LXC: Get acquainted with world of LXC (ISBN 9781785888946)
- 지은이콘스탄틴 이바노프(Konstantin Ivanov)
- 옮긴이김경호, 강용제, 김무형, 배동환, 차원호
- ISBN : 9791161750811
- 30,000원
- 2017년 11월 29일 펴냄 (절판)
- 페이퍼백 | 452쪽 | 188*235mm
- 시리즈 : acorn+PACKT
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약
최근 몇 년 동안 다양한 애플리케이션을 운영하는 기업들은 컨테이너 기술을 채택해 광범위하게 활용하고 있다. 이는 커널 네임스페이스(Namespace)와 함께 제어 그룹(Cgroup) 기술의 출현으로 더 나은 자원 관리가 가능해졌기 때문이다. 리눅스 컨테이너는 하이퍼바이저 계층의 오버헤드 없이 커널 기능을 활용해 운영체제 수준의 가상화를 제공한다.
이 책은 LXC 구현에 대한 기본 개념 소개부터 LXC 컨테이너를 설치 및 구성하고 컨테이너의 네트워킹, 보안, 백업까지 실용적인 내용을 다루는 완벽한 단계별 안내서다. 그뿐 아니라 오픈스택(OpenStack)과 베이그런트(Vagrant) 같은 다양한 기술을 사용해 LXC를 배포하는 방법도 함께 배워본다. 이 책의 학습이 끝나면 LXC를 구현하는 방법과 함께 고가용성과 확장성이 요구되는 운영 환경에서 애플리케이션을 실행하는 방법을 명확하게 이해할 수 있을 것이다.
이 책에서 다루는 내용
█ 커널 네임스페이스와 제어 그룹을 사용한 리눅스 컨테이너 기반 기술
█ LXC 및 libvirt를 사용한 리눅스 컨테이너 설치, 구성 및 관리
█ 파이썬 libvirt 바인딩을 사용한 애플리케이션 작성
█ 컨테이너 네트워킹
█ LXC 모니터링과 보안 설정
█ 클라우드 환경에서 LXC를 활용한 고가용 애플리케이션 개발 및 배포
이 책의 대상 독자
LXC 동작 방법에 대한 깊이 있는 이해를 원하는 리눅스 관리자부터 하이퍼바이저에 대한 오버헤드 없이 격리된 환경에서 쉽고 빠르게 프로토타입 코드를 작성해야 하는 소프트웨어 개발자까지 리눅스 컨테이너에 관심이 있는 모든 독자를 대상으로 한다. 데브옵스(DevOps) 엔지니어는 특히 이 책을 처음부터 끝까지 읽어보는 것을 권장한다.
이 책의 구성
1장, ‘리눅스 컨테이너 소개’에서는 리눅스 커널에서의 컨테이너 역사에 대한 깊이 있는 탐구와 함께 기본 용어들을 살펴본다. 기본 내용을 학습한 후 커널 네임스페이스(namespace) 와 제어 그룹(cgroup)의 구현 방식을 자세히 살펴보고, 일부 C 시스템 콜을 실습해본다.
2장, ‘리눅스 시스템에서 LXC 설치하고 실행하기’에서는 우분투(Ubuntu) 와 레드햇(Red Hat) 시스템에 LXC를 설치하고 설정 후 실행하기 위한 모든 내용을 다룬다. 다양한 LXC 구성 방법과 함께 필요한 패키지 및 도구를 배워본다. 2장이 끝날 때쯤 LXC 컨테이너가 실행 중인 리눅스 시스템이 만들어져 있을 것이다.
3장, ‘네이티브 도구와 libvirt 도구를 이용한 명령행 작업’에서는 명령행을 이용해 LXC를 실행하고 운영하는 내용을 담고 있다. 패키지 목록의 다양한 도구들을 다루고, 컨테이너화된 애플리케이션과 상호작용을 할 수 있는 다양한 방법을 보여준다.
4장, ‘파이썬을 사용한 LXC 코드 통합’에서는 도구를 작성하는 방법과 파이썬 라이브러리를 사용해 LXC 프로비저닝 및 관리를 자동화하는 방법을 예제를 통해 살펴본다. 베이그런트 (Vagrant) 와 LXC를 사용해 개발 환경을 만드는 방법 또한 살펴볼 것이다.
5장, ‘리눅스 브리지와 OVS를 이용한 LXC 네트워킹’에서는 컨테이너 환경에서의 네트워킹을 심층적으로 다룬다. 리눅스 브리지(Linux bridge)에 LXC를 연결, 직접 연결, NAT 및 다른 다양한 방법에 대해 살펴볼 것이다. 그리고 OVS Open vSwitch 를 사용한 좀 더 진화된 트래픽 관리 기술 역시 살펴본다.
6장, ’LXC의 클러스터링과 수평적 확장’에서는 이전 장에서 배운 지식을 활용해 아파치 컨테이너 클러스터를 구축하고 GRE 터널과 OVS를 사용해 클러스터에 연결하는 방법을 배워본다. 또한 최소 루트 파일시스템(Minimal Root Filesystem) 컨테이너 내부에서 단일 프로세스 애플리케이션을 실행하는 예제들도 함께 다룰 것이다.
7장, ‘컨테이너 환경의 모니터링과 백업’에서는 LXC 애플리케이션 컨테이너를 백업하고 동작에 대한 알림과 트리거 설정을 위해 모니터링 솔루션을 배포하는 방법을 다룬다. 센수 (Sensu)와 모닛(Monit)을 사용한 모니터링 예제 및 iSCSI와 GlusterFS를 사용한 핫(hot)/콜드 (cold) 백업 생성 예제를 살펴볼 것이다.
8장, ‘오픈스택에서 LXC 사용하기’에서는 오픈스택(OpenStack)을 활용해 LXC 컨테이너를 프로비저닝하는 방법을 다룬다. 오픈스택을 구성하는 다양한 컴포넌트에 대한 소개와 함께 LXC 노바 드라이버(Nova Driver)를 사용해 컴퓨팅 자원 풀에서 자동으로 LXC 컨테이너를 프로비저닝하는 방법을 살펴본다.
부록, ‘LXC의 대안, 도커와 오픈VZ’에서는 도커(Docker)와 오픈VZ(OpenVZ) 같은 유명한 컨테이너 솔루션들의 역사와 함께, 솔루션 간 유사점 및 차이점을 살펴보며 이 책을 마무리한다. 이 솔루션들을 설치하고 구성한 후 LXC와 함께 실행하는 실용적인 예제들도 배워볼 것이다.
목차
목차
- 1장. 리눅스 컨테이너 소개
- 운영체제 커널의 발전과 초기 운영체제 커널의 제한사항
- 리눅스 컨테이너 사례
- 리눅스 네임스페이스: LXC의 기본
- 마운트 네임스페이스
- UTS 네임스페이스
- IPC 네임스페이스
- PID 네임스페이스
- 사용자 네임스페이스
- 네트워크 네임스페이스
- cgroup을 사용한 자원 관리
- I/O 처리량 제한
- 메모리 사용 제한
- cpu 및 cpuset 하위 시스템
- cgroup freezer 하위 시스템
- 사용자공간 도구를 사용해 cgroup 관리 및 변경사항 유지하기
- systemd를 사용해 자원 관리하기
- 요약
- 2장. 리눅스 시스템에서 LXC 설치하고 실행하기
- LXC 설치하기
- 우분투에서 apt 명령을 사용해 LXC 설치하기
- 우분투에서 소스를 사용해 LXC 설치하기
- 센트OS에서 yum을 사용해 LXC 설치하기
- 센트OS 에서 소스를 사용해 LXC 설치하기
- LXC 디렉토리 구조
- LXC 컨테이너 생성하고 조작하기
- 첫 컨테이너 만들기
- 우분투에서 debootstrap을 사용해 맞춤형 컨테이너 만들기
- 센트OS에서 yum을 사용해 맞춤형 컨테이너 만들기
- 요약
- LXC 설치하기
- 3장. 네이티브 도구와 libvirt 도구를 이용한 명령행 작업
- LVM 백업 저장소 사용하기
- LVM 백업 저장소를 이용해 LXC 컨테이너 만들기
- LVM 백업 저장소에 컨테이너 스냅샷 만들기
- truncate, dd, losetup을 이용해 블록 장치 만들기
- Btrfs 백업 저장소 사용하기
- Btrfs 백업 저장소를 사용해 LXC 컨테이너 만들기
- Btrfs 백업 저장소에 컨테이너 스냅샷 만들기
- ZFS 백업 저장소 사용하기
- ZFS 백업 저장소를 사용해 LXC 컨테이너 만들기
- ZFS 백업 저장소에 컨테이너 스냅샷 만들기
- LXC 컨테이너 자동 시작하기
- LXC 컨테이너 훅
- 실행 중인 컨테이너의 파일시스템을 호스트 OS의 디렉토리로 붙이고 탐색하기
- 실행 중인 컨테이너 고정하기
- 컨테이너의 자원 사용량 제한하기
- libvirt와 함께 LXC 컨테이너 만들고 실행하기
- 데비안과 센트OS에서 제공하는 패키지를 이용해 libvirt 설치하기
- Containerization
- 소스로부터 libvirt 설치하기
- libvirt를 사용해 LXC 컨테이너 정의하기
- libvirt를 사용해 LXC 컨테이너 시작하고 연결하기
- libvirt를 사용해 실행 중인 컨테이너에 블록 장치 부착하기
- libvirt LXC로 네트워킹하기
- libvirt를 사용해 기존 LXC 컨테이너의 설정을 XML 파일로 변환 추출하기
- libvirt와 함께 사용하는 LXC 컨테이너 정지하기와 삭제하기
- 요약
- LVM 백업 저장소 사용하기
- 4장. 파이썬을 사용한 LXC 코드 통합
- LXC 파이썬 바인딩
- LXC 파이썬 바인딩을 설치하고 우분투와 센트OS에서 개발 환경 준비하기
- 파이썬을 사용해 첫 컨테이너 만들기
- 파이썬을 사용해 컨테이너 정보 수집하기
- 파이썬을 이용해 컨테이너 시작, 변경 및 설정 옵션 조회하기
- 파이썬을 이용해 컨테이너 상태 바꾸기
- 파이썬으로 컨테이너 정지하기
- 파이썬으로 컨테이너 복제하기
- 파이썬으로 컨테이너를 제거하고 가상 환경 비활성화하기
- libvirt의 파이썬 바인딩
- libvirt 파이썬 개발 패키지 설치하기
- libvirt 파이썬으로 LXC 컨테이너 만들기
- libvirt 파이썬을 이용해 컨테이너를 시작하고 기본 작업 실행하기
- libvirt 파이썬을 이용해 컨테이너 정보 모으기
- libvirt 파이썬을 이용해 LXC 컨테이너를 정지하고 환경 삭제하기
- 베이그런트와 LXC
- 베이그런트 LXC 설정하기
- 모두 모으기: 파이썬을 이용해 LXC에 간단한 RESTful API 구축하기
- LXC 컨테이너를 생성하고 설정하는 API 호출
- API 호출을 이용해 정리하기
- 요약
- LXC 파이썬 바인딩
- 5장. 리눅스 브리지와 OVS를 이용한 LXC 네트워킹
- 리눅스의 소프트웨어 브리지
- 리눅스 브리지
- 우분투의 리눅스 브리지와 LXC 패키지
- 센트OS의 리눅스 브리지와 LXC 패키지
- 컨테이너에 IP를 얻어오기 위한 dnsmasq 서비스 사용
- LXC 컨테이너에 수동으로 IP 주소 할당하기
- LXC 네트워크 설정 옵션의 개요
- 수동으로 리눅스 브리지 조작
- OVS
- 호스트 네트워크에 LXC 연결하기
- none 네트워크 모드로 LXC 구성
- empty 네트워크 모드로 LXC 구성
- veth 모드로 LXC 구성
- phys 모드로 LXC 설정
- vlan 모드로 LXC 설정
- macvlan 모드로 LXC 구성
- 요약
- 리눅스의 소프트웨어 브리지
- 6장. LXC의 클러스터링과 수평적 확장
- LXC를 사용해 애플리케이션 확장하기
- libvert LXC를 사용해 최소 루트 파일시스템을 갖는 아파치 확장하기
- 컨테이너에서 사용하는 최소 루트 파일시스템 만들기
- 아파치 libvirt 컨테이너 정의하기
- 아파치 libvirt 컨테이너 시작하기
- libvirt LXC와 HA프록시를 사용해 아파치 확장하기
- 완전 LXC 루트 파일 시스템과 OVS GRE 터널을 사용해 아파치 확장하기
- 로드 밸런서 호스트 구성하기
- 로드 밸런서 컨테이너 만들기
- GRE 터널 구축하기
- 아파치 노드 구성하기
- 아파치와 HP프록시를 설치하고 연결을 테스트하기
- 아파치 서비스 확장하기
- libvert LXC를 사용해 최소 루트 파일시스템을 갖는 아파치 확장하기
- 요약
- LXC를 사용해 애플리케이션 확장하기
- 7장. 컨테이너 환경의 모니터링과 백업
- LXC 백업과 마이그레이션
- tar와 rsync를 사용해 LXC 백업본 만들기
- 아카이브 백업을 사용해 복구하기
- lxc-copy 유틸리티를 사용해 컨테이너 백업본 만들기
- iSCSI 대상에서 LXC 컨테이너 마이그레이션하기
- iSCSI 대상 설정하기
- iSCSI 초기자 설정하기
- 블록 장치를 LXC용 rootfs로 사용해 iSCSI 대상에 로그인하기
- iSCSI 컨테이너 구축하기
- iSCSI 컨테이너 복구하기
- 복제 GlusterFS 저장소를 사용해 LXC 활성 백업하기
- 공유 저장소 만들기
- GlusterFS LXC 컨테이너 구축하기
- GlsterFS 컨테이너 복구하기
- LXC 메트릭을 모니터링하고 경고하기
- 컨테이너 메트릭 수집하기
- lxc-monitor를 사용해 컨테이너 상태 추적하기
- lxc-top을 사용해 CPU와 메모리 사용률 확인하기
- lxc-info를 사용해 컨테이너 정보 수집하기
- cgroup을 활용해 메모리 메트릭 수집하기
- cgroup을 사용해 CPU 통계 수집하기
- 네트워크 메트릭 수집하기
- 모닛을 사용한 간단한 컨테이너 모니터링과 경고
- 센수를 사용한 컨테이너 모니터링과 경고 트리거
- 센수 에이전트와 서버를 사용해 LXC 컨테이너 모니터링하기
- 독립 센수 검사를 사용해 LXC 컨테이너 모니터링하기
- 컨테이너 메트릭 수집하기
- LXC와 젠킨스, 센수를 사용한 자동 확장 패턴
- 요약
- LXC 백업과 마이그레이션
- 8장. 오픈스택에서 LXC 사용하기
- 우분투에 LXC를 지원하는 오픈스택 배포하기
- 호스트 준비하기
- 데이터베이스 서비스 설치하기
- 메시지 큐 서비스 설치하기
- 캐싱 서비스 설치하기
- 신원 확인 서비스 설치 및 설정하기
- 이미지 서비스 설치 및 설정하기
- 컴퓨팅 서비스 설치 및 설정하기
- 네트워킹 서비스의 설치 및 구성하기
- LXC 인스턴스 flavor 정의, 키 페어 생성 및 보안 그룹 만들기
- 네트워크 만들기
- 오픈스택을 사용해 LXC 컨테이너 프로비저닝하기
- 요약
- 우분투에 LXC를 지원하는 오픈스택 배포하기
- 부록. LXC의 대안, 도커와 오픈VZ
- 오픈VZ로 컨테이너 생성
- 도커로 컨테이너 생성
- 특권 없는 LXC 컨테이너 실행하기