'기본 개념, 심화 개념, 실무 적용, 활용' 순으로 체계적으로 익히는,
개발자를 위한 도커 핵심 가이드!
현대 소프트웨어 개발에서는 쿠버네티스와 컨테이너 기술이 필수적이다. 안정적이면서도 유연한 시스템을 구축하려면 컨테이너 기술에 대한 깊은 이해가 필요하다. 이 책은 초보자가 쉽게 이해하고 따라갈 수 있도록 체계적으로 구성했다. 경험이 있는 개발자는 다양한 예제를 통해 컨테이너 기술을 실무에서 더욱 효과적으로 활용할 수 있다.
가상화 환경에서 네트워크와 볼륨 개념은 많은 개발자들에게 어려운 개념이다. 이 책은 저자가 직접 제작한 시각 자료와 구조도를 활용해 이러한 개념을 직관적으로 설명한다. 또한 이론적인 설명에 그치지 않고, 애플리케이션을 컨테이너화하는 단계별 실습을 통해 실무에서 활용하는 방법을 익힐 수 있다. 이 책을 통해 컨테이너 기술을 체계적으로 익히고, 클라우드 네이티브 환경에서 경쟁력을 갖춘 개발자로 성장할 수 있을 것이다.
Contents
▣ 01장: 도커 시작하기
1.1 실습 환경 정보
1.2 윈도우에서 실습 환경 구축하기
__1.2.1 깃 설치하기
__1.2.2 도커 데스크톱 설치하기
__1.2.3 VS Code 설치하기
__1.2.4 실습 폴더 생성하기
__1.2.5 실습 자료 내려받기
1.3 macOS에서 실습 환경 구축하기
__1.3.1 iTerm2 설치하기
__1.3.2 홈브루와 깃 설치하기
__1.3.3 도커 데스크톱 설치하기
__1.3.4 VS Code 설치하기
__1.3.5 실습 폴더 생성하기
__1.3.6 실습 자료 내려받기
1.4 실습 가이드(윈도우, macOS 공통)
__1.4.1 실습 명령어 복사하기
__1.4.2 브라우저 시크릿 창 사용하기
__1.4.3 모든 컨테이너 삭제하기
▣ 02장: 가상화 기술과 컨테이너 가상화
2.1 서버
__2.1.1 서버와 클라이언트
__2.1.2 서버의 종류
__2.1.3 엔터프라이즈 환경의 서버 운영
2.2 가상화 기술
__2.2.1 가상화 기술과 소프트웨어
__2.2.2 가상화 기술의 경제성
2.3 하이퍼바이저 가상화
__2.3.1 프로세스와 OS
__2.3.2 하이퍼바이저의 역할
2.4 컨테이너 가상화
__2.4.1 하이퍼바이저 가상화 vs. 컨테이너 가상화
2.5 도커
__2.5.1 도커의 아키텍처
2.6 컨테이너 실행
__2.6.1 웹 서버
▣ 03장: 이미지와 컨테이너
3.1 이미지
__3.1.1 프로그램을 실행하는 데 필요한 요소
__3.1.2 이미지
__3.1.3 이미지를 활용한 컨테이너 실행
3.2 컨테이너
__3.2.1 프로그램과 프로세스
__3.2.2 이미지와 컨테이너
__3.2.3 이미지와 컨테이너의 활용
3.3 이미지와 컨테이너의 메타데이터
__3.3.1 Cmd와 Env 값 변경하기
__3.3.2 docker run 명령의 -d 옵션
3.4 컨테이너의 생명주기
▣ 04장: 이미지 레지스트리
4.1 이미지 레지스트리
__4.1.1 이미지 레지스트리의 기능
__4.1.2 이미지가 저장되는 공간
__4.1.3 프라이빗 레지스트리
4.2 이미지 이름 규칙
4.3 도커 허브 가입 및 이미지 공유하기
▣ 05장: 이미지 빌드
5.1 이미지와 레이어
__5.1.1 레이어 구조의 장점
__5.1.2 레이어의 구성 원리
__5.1.3 이미지와 컨테이너의 레이어
__5.1.4 카피-온-라이트(Copy-On-Write; COW)
5.2 이미지 커밋
5.3 이미지 빌드
5.4 빌드 컨텍스트
__5.4.1 .dockerignore 파일을 사용한 파일 제외
5.5 도커파일 지시어
__5.5.1 envColorApp
__5.5.2 envColorApp 구성
__5.5.3 애플리케이션 빌드와 이미지 빌드
__5.5.4 envColorApp 소스코드
5.6 멀티 스테이지 빌드
__5.6.1 JavaHelloApp
__5.6.2 JavaHelloApp 소스코드
__5.6.3 학습 내용 정리
▣ 06장: 컨테이너 애플리케이션
6.1 클라우드
__6.1.1 클라우드 서버
__6.1.2 퍼블릭 클라우드와 프라이빗 클라우드
__6.1.3 클라우드와 공유 경제
__6.1.4 클라우드 컴퓨팅의 핵심 요소: 확장성, 복원력, 비용 효율성
6.2 클라우드 네이티브
__6.2.1 컨테이너
__6.2.2 모놀리식과 MSA
6.3 리피 애플리케이션
6.4 리피 애플리케이션 이미지 빌드하기
__6.4.1 소스코드 다운로드
__6.4.2 PostgreSQL 이미지 빌드하기
__6.4.3 백엔드 애플리케이션 이미지 빌드하기
__6.4.4 프런트엔드 이미지 빌드하기
▣ 07장: 네트워크
7.1 네트워크 기본
__7.1.1 네트워크
__7.1.2 IP 주소
__7.1.3 공인 IP와 사설 IP
__7.1.4 네트워크 인터페이스와 포트
__7.1.5 공인망과 사설망
__7.1.6 NAT와 포트 포워딩
__7.1.7 DNS
7.2 도커 네트워크
__7.2.1 브리지 네트워크
__7.2.2 가상 네트워크와 인터페이스
__7.2.3 포트 포워딩 명령
__7.2.4 도커의 DNS
__7.2.5 도커의 네트워크 종류
7.3 리피 네트워크
▣ 08장: 볼륨
8.1 컨테이너의 상태와 스테이트리스 특성
__8.1.1 컨테이너의 스테이트리스 특성
__8.1.2 서버 관리 패러다임의 변화: Pet vs Cattle
8.2 애플리케이션 현대화
__8.2.1 컨테이너 기반 애플리케이션의 특징
__8.2.2 스테이트리스 애플리케이션 개발 시 고려사항
8.3 도커 볼륨
__8.3.1 도커 볼륨의 필요성
__8.3.2 도커 볼륨의 작동 원리
__8.3.3 도커 볼륨 활용
__8.3.4 도커 볼륨 관리 명령어
__8.3.5 도커 볼륨의 마운트 종류
▣ 09장: 도커 실무
9.1 이미지 관리
__9.1.1 RUN 지시어를 활용한 레이어 최적화
9.2 캐시를 활용한 빌드
__9.2.1 레이어의 캐시 생성 원리
__9.2.2 캐시를 활용한 빌드 최적화
9.3 3티어 아키텍처 구성
9.4 환경변수를 활용한 동적 서버 설정
9.5 이중화 DB 구성
9.6 컨테이너 애플리케이션 최적화
__9.6.1 리소스 최적화
__9.6.2 자바 힙 메모리 최적화
9.7 컨테이너를 활용한 개발 환경 구성
▣ 10장: 도커 컴포즈
10.1 YAML 파일
10.2 도커 컴포즈 명령어
▣ 11장: 도커와 데브옵스
11.1 데브옵스
__11.1.1 CI/CD 파이프라인
11.2 깃허브 액션
__11.2.1 깃허브 가입 및 소스코드 포크
__11.2.2 리피 파이프라인 소스 확인
__11.2.3 깃허브 액션 개념
__11.2.4 워크플로 문법
__11.2.5 자주 사용하는 액션
Author
황현우
컴퓨터 공학을 전공하고 클라우드 엔지니어로 근무하며 쿠버네티스와 도커 기반의 인프라 구축 및 운영을 담당했으며, 현재는 AI 애플리케이션 개발자로 활동하고 있다. 복잡한 기술을 초보자의 눈높이에 맞춰 설명하는 것을 특기로 삼아 인프런에서 ‘개발자를 위한 쉬운 리눅스’와 ‘개발자를 위한 쉬운 도커’ 강의를 통해 많은 개발자들의 기술 성장을 돕는 중이다.
컴퓨터 공학을 전공하고 클라우드 엔지니어로 근무하며 쿠버네티스와 도커 기반의 인프라 구축 및 운영을 담당했으며, 현재는 AI 애플리케이션 개발자로 활동하고 있다. 복잡한 기술을 초보자의 눈높이에 맞춰 설명하는 것을 특기로 삼아 인프런에서 ‘개발자를 위한 쉬운 리눅스’와 ‘개발자를 위한 쉬운 도커’ 강의를 통해 많은 개발자들의 기술 성장을 돕는 중이다.