개발 · 프로그래밍

/

데브옵스 · 인프라

DevOps를 위한 Docker 가상화 기술 (Private Harbor Registry)

본 강의는 Cloud Native Architecture를 구성하는 4가지 구성요소 중, 컨테이너 가상화 기술에 대해 학습하는 과정입니다. Microservice 애플리케이션을 배포하고 운영하기 위한 최선의 방법인 컨테이너 가상화라는 기술에 대한 기본적인 개념을 이해하고, 컨테이너 가상화 기술 중 가장 대중적으로 알려진 Docker 기술에 대해 다뤄보는 학습 과정입니다. MSA 형태로 개발 된 애플리케이션을 배포하고 운영하기 위해 필요한 필수적인 내용에 대해 이론 학습 뿐만 아니라, 관련된 실습 예제를 통해 실제 Docker 컨테이너가 어떻게 작동되는지에 대해 이해하실 수 있습니다. 본 과정에서는 기존 다른 강의에서 다루지 않았던 Docker Security와 Logging 등과 같은 다양한 요소에 대해서도 학습할 수 있으며, 최종 실습 프로젝트에서는 Docker 기술과 연계될 수 있는 서비스(Harbor + Argocd)들을 구축하고 애플리케이션을 배포 함으로써 DevOps를 적용함에 있어 필요로 하는 핵심적인 운영 환경에 대해 실습해 볼 수 있습니다.

(5.0) 수강평 5개

수강생 239명

Thumbnail

초급자를 위해 준비한
[데브옵스 · 인프라, Docker] 강의입니다.

이런 걸
배워요!

  • Docker 컨테이너 기술

  • Docker Image 생성

  • Docker Registry 구성

  • Docker Compose를 이용한 멀티 컨테이너 관리

  • Docker Security

  • Docker 로그 파일의 분석

  • Docker 이외의 컨테이너 기술

  • 멀티 플랫폼을 위한 Docker Build

  • CI/CD에서의 Docker 환경 구축

  • Private Harbor Registry

  • Jenkins CI/CD Pipeline 연계

  • Kubernetes 배포 (Argocd)

Microservice Architecture로 개발 된 애플리케이션들은 어떻게 배포/운영되어야 할까요? 🤔

Microservice Architecture로 개발 된 애플리케이션들은 컨테이너 가상화 기술을 이용하여 배포되고 운영되어야 합니다. Linux의 산하 기관인 CNCF(Cloud Native Computing Foundation, https://www.cncf.io/)에서는 Cloud Native Application Architecture를 구축하고 실행하는 데 사용하는 다양한 소프트웨어 및 인프라적인 구성 요소로 마이크로서비스, 컨테이너 가상화, CI/CD, DevOps 등을 정의하고 있습니다. 그중에서 클라우드 네이티브 애플리케이션으로 개발 된 결과물을 실행하고 운영하기 위해 컨테이너 가상화라는 기술을 소개하고 있는데, 바로 이 컨테이너 가상화 기술 분야에서 가장 대중적으로 알려져있고 사용되고 있는 서비스가 Docker 서비스 입니다.

본 강의에서는 Docker 가상화 기술을 이해하기 위해 필요한 핵심적인 개념부터, 멀티 컨테이너를 구성하고 관리하기 위한 필요한 Docker Compose 기술, 컨테이너 가상화를 사용하는데에 고려해야 할 보안적인 부분, 그리고 CI/CD 파이프라인과의 연계 부분 뿐만아니라, Docker Orchestration에 대한 부분에 대해서 학습하고 관련 예제 코드를 실습하도록 구성하였습니다.

다양한 실습 예제 및 Toy 프로젝트를 통해, Docker 가상화 기술에 핵심적인 기능 외에도 간단한 3-tier 구조의 애플리케이션을 어떻게 컨테이너화 하여 관리하고 운영하면 좋은지에 대해서도 소개하고 있으며, Docker Desktop에 포함된 Orchestration 도구를 이용하여, 기본적인 리소스들을 관리 뿐만 아니라, 서비스들의 스케일링 작업 롤링 업데이트 방법에 대해서도 학습하고 있습니다.

강의 후반부에서는 Docker의 기본적인 Runtime과 Registry외도 Podman이나 Harbor와 같은 대체 기술을 통해 Docker를 사용하는 방법에 대해서도 다루고 있으며, 최종 프로젝트에서는 Jenkins 및 Kubernetes와 Argocd를 통해 배포 운영하는 과정에 대해서도 소개하고 있습니다.

이번 강의를 통해 컨테이너 가상화에 대한 전반적인 내용과 IT 인프라를 구축하기 위해 가상화 기술을 어떻게 활용할 수 있는지에 대해서 학습해 보시기 바랍니다.

💡DevOps의 컨테이너 가상화 전문가를 향한 첫걸음을 시작해 보시기 바랍니다.

  • 컨테이너 가상화 기술에 대해 이해하고, 애플리케이션을 여러 컨테이너로 분리하여 배포하는 방법에 대해 학습합니다.

  • 개념적인 설명을 위한 다양한 이미지를 활용하여 이해하기 쉽게 내용을 전달하고 있습니다.


  • 본 강의에서는 이론과 실습을 같이 병행할 수 있도록 구성하였습니다. 이론적인 강의에서 그치지 않고, 각 섹션에서 설명 된 개념에 대해서는 반드시 실습 과정을 통해 직접 테스트해 볼 수 있도록 구성하였으며, 프로그래밍이나 인프라에 대한 높은 지식이 없더라도 쉽게 예제를 실습해 볼 수 있도록 구성하였습니다.



  • 모든 실습 예제는 각 섹션에 설명된 내용을 기준으로 실습 할 수 있도록 구성되어 있으며, 간단한 Toy 프로젝트를 예시로 Frontend + Backend + Database를 구성으로 하는 3-tier 웹 애플리케이션을 Docker와 Docker Compose 기술을 이용하여 관리하는 과정에 대해서 학습하실 수 있습니다.

  • 기본적인 웹 애플리케이션은 Frontend 서비스를 위해 React.js, Backend 서비스를 위해 Spring Boot, Database는 Mariadb를 사용하여 구성 되었습니다. 그러나, 프로그래밍에 대한 이해를 바탕으로 실습 예제를 실행하는 것이 아니라, Docker 가상화 기술에 필요한 내용으로 예제를 실습할 수 있도록 설명하고 있습니다.

이 강의의 특징

📌 Docker 가상화 기술에 대해 기본적인 개념에서부터 운영에 필요한 핵심 기술에 이르기까지 다양한 요소들에 대해 이론적인 설명과 실습을 같이 실행해 보실 수 있습니다.

📌 간단한 웹 애플리케이션을 이용하여 각 컨테이너별로 설정해야 하는 환경에 대해 이해하고, 멀티 컨테이너를 구성하여 운영하여 위해 필요한 Docker Compose나 Docker Orchestration 기술에 대해서도 학습하실 수 있습니다.

📌 각 섹션에서는 이론에 설명과 실습 예제를 함께 제공함으로써, 수강생 분들은 직접 본인들의 Docker 환경에서 다양한 예제를 실행해 보실 수 있습니다.

📌 기본적인 Docker의 기능 외에 Docker 기술을 대체할 수 있는 기술에 대해서도 소개하고 있으며, CI/CD 배포 자동화를 위해 Docker가 어떤 부분에서 사용될 수 있는지도 소개하고 있습니다.

📌 본 강의는 컨테이너 가상화 기술에 대해 처음 접하시거나, 기본적인 Docker 환경에 대해서 이해하고 있는 분들을 위해, 멀티 컨테이너를 운영하기 위한 방법과, Docker 가상화 기술을 사용하기 위해 필요한 보안적인 요소, 멀티 플랫폼 빌드, 로깅 메시지 처리 그리고, Cloud Native Architecture에서의 Docker의 역할과 위치 등에 대해서도 함께 학습하실 수 있습니다.

💡From Beginner to Master

  • 본 강의는 컨테이너 가상화에 대한 기본적인 내용을 이해해 가면서, 웹 애플리케이션을 가상화 형태로 배포하고 운영하기 위해 필요한 필수 기술까지 같이 학습할 수 있도록 구성되어 있습니다.

  • 간단한 Docker 이미지 생성과 컨테이너의 생성에서부터, 멀티 컨테이너를 관리하기 위한 Docker Compose의 사용, 멀티 Host에서 컨테이너를 관리하기 위한 Docker Orchestration, CI/CD하고의 연계에 대해서 학습하고 있습니다.

  • 뿐만 아니라, Docker Image의 보안적인 요소, 멀티 플랫폼에서의 Docker 이미지 빌드, Docker 컨테이너의 로깅 메시지 관리와 클라우드 환경에서의 컨테이너 사용을 위한 관리형 컨테이너 기술에 대해서도 소개하고 있습니다.

  • 본 강의에서는 학습했던 모든 과정에 대한 마무리 Capstone Project로써, 웹 애플리케이션과 오픈 소스로 구성되어 있는 다양한 서비스와의 연계를 통해 실무에서 작업하고 있는 환경에 대해 간접적으로나마 경험하고 실습해 보실 수 있도록 구성하였습니다.

이런 분들께 추천해요

DevOps 엔지니어로 레벨업하고 싶어요.

DevOps 환경에서 애플리케이션에 대한 배포와 운영에 대해 관심을 가지고 있는 개발자/학생

컨테이너 가상화 기술에 관심있어요.
Microservice Architecture로 개발된 애플리케이션을 어떻게 운영해야 하는지 궁금하신 분

CI/CD의 파이프 라인에서 CD에 대한 과정이 궁금해요.
애플리케이션 배포를 위한 지속적인 통합과 지속적인 배포를 하기위해 Docker 사용에 대해 궁금해요

💡컨테이너 가상화 기술뿐만 아니라, Microservice 애플리케이션의 배포와 운영에도 관심이 있으신 분!

  • 애플리케이션의 개발 과정 이후에 지속적인 배포에서 어떤 단계를 운영 환경에 배포되는지 궁금하신 분

  • 컨테이너 가상화 기술에 대해 관심을 가지고, DevOps 엔지니어로 성정하시고자 하는 분

  • 멀티 컨테이너 운영 및 컨테이너 리소스 관리를 위한 Docker Orchestration 도구에 대해 관심이 있으신 분

  • Kubernetes와 같은 전문 Orchestration 도구를 사용하지 않더라도 컨테이너의 Rolling Update 및 Rollback 기능을 활용하여 서비스를 운영하시고자 하는분

수강 후에는

  • 컨테이너 가상화 기술에 대해 이해하고 애플리케이션 배포를 위해 멀티 컨테이너를 관리하는 방법에 대해 알게 돼요.

  • Docker Compose 기술을 이용하여 여러 컨테이너들을 한번에 실행하고 관리하는 방법에 대해 알게 돼요.

  • Docker Swarm 기술을 이용하여 기본적인 Docker Orchestration 도구에 대한 사용방법을 배우고, 컨테이너들에 대한 Rolling Update 뿐만 아니라, Rollback 기능에 대해서도 알게 돼요.

  • Docker Image에 대해 보안취약성 검사를 통해, 보다 안전한 Docker Image를 사용할 수 있게 돼요.

  • Docker 이외의 컨테이너 가상화 기술에 대해 이해하고 사용할 수 있게 돼요.

  • CI/CD 자동화 배포 파이프라인에서 Docker 를 이용하여 지속적인 배포 시스템을 구축할 수 있게 돼요.

  • 웹 애플리케이션을 클라우드 서비스에서 제공하는 가상화 서비스 환경에서 운영하는 방법에 대해 학습하게 돼요.

  • 컨테이너 가상화를 보다 효율적으로 운영하기 위한 Orchestration 도구에 Docker 컨테이너 이미지를 배포하기 위해 어떤 기술이 사용되지에 대해서도 이해할 수 있게 돼요.

💡이 강의를 수강하면 얻을 수 있는 변화에 대해 작성해주세요.

  • 본 강의를 통해 컨테이너 가상화 기술에 대해 이해할 수 있습니다.

  • 개발자 및 개발에 관심이 있으신 분은 자신의 애플리케이션을 가상화 환경에서 실행하고 운영할 수 있는지 이해할 수 있습니다.

  • 다양한 멀티 컨테이너를 운영하기 위한 기술과 처리 방법에 대해서 학습할 수 있습니다.

  • CI/CD 환경에서 Docker 가상화 기술을 어떻게 응용하면 좋을지에 대해 실습해 보실 수 있습니다.

이런 내용을 배워요.

Docker 가상화의 기본 개념 및 핵심 기술

본 강의에서는 Docker 가상화 사용을 위한 기본적인 이미지 생성, 컨테이너 사용, 볼륨과 네트워크의 사용법 뿐만 아니라, 멀티 컨테이너 관리를 위한 Docker Compose와 Docker Swarm에 대해서도 실습하고 있으며, Docker 보안이나 Logging 처리 방법 등에 대해서도 소개하고 있습니다.

CI/CD 환경에서의 Docker 가상화의 사용

Docker 가상화를 이용하는 가장 큰 목적은 물리적인 시스템 환경이 가지고 있는 제약적인 문제점을 해결함과 동시에 다양한 애플리케이션과 미들웨어를 쉽게 작동하고 관리하기 위한 목적에 있습니다. 이러한 서비스를 자동화 배포하기 위한 방법으로 CI/CD 환경과 연계하여 Docker 컨테이너 가상화 기술에 대한 사용법에 대해서 배우실 수 있습니다,

다양한 실습 예제

본 강의의 이론적인 설명 후에는, 각 섹션에서 설명 되었던 내용을 토대로 실습하실 수 있는 예제를 함께 제공하고 있습니다. 제공 되는 실습 코드를 본인의 환경에서 직접 수행해 봄으로써, Docker 컨테이너의 작동 과정에 대해 보다 쉽게 학습하실 수 있습니다. 강의에서는 Docker의 기본 서비스 외에 Private Registry Harbor 및 Podman 등과 같은 Docker 대체 기술에 대해서도 실습해 보실 수 있습니다.

Capstone project (최종 실습 프로젝트)

모든 이론적인 강의와 실습 학습이 완료된 후에는 최종 섹션에서 Capstone project를 수행할 수 있도록 준비되었습니다. Capstone project에서는 웹 애플리케이션을 CI/CD 환경에서 자동화 배포할 수 있도록 연계함과 동시에, 오픈소스로 제공되는 Docker Registry와의 연계, 그리고 Orchestration 도구를 이용하여 리소스를 관리해 보는 전체 과정에 대해 학습하실 수 있도록 구성되어 있습니다.

이 강의를 만든 사람

  • ) 엔제이원컴퍼니 대표 

  • ) 동국대학교 국제정보대학원 정보보호학과 대우교수

  • ) JP Mogan Chase AMJ Tech consultant (일본)

  • ) 삼성 SDS CMS 사업본부 책임 엔지니어

수강 전 참고 사항

실습 환경

  • 강의는 MacOS 기준으로 설명합니다. Windows 10, Windows 11 환경이라고 Docker Desktop이 설치되어 있다면 대부분의 실습 예제를 따라하실 수 있습니다.

  • 강의에서는 다양한 Docker 컨테이너 이미지를 기동하면서 실습을 진행하고 있습니다. 최소 8GB이상의 메모리(16GB 이상 권장)와 100GB이상의 여유 저장공간을 준비하시고 실습하시기를 권장 권장 드립니다.

  • 강의에서는 실습에 사용되는 몇몇 스크립트 및 코드에 대해 Visual Studio Code를 이용해서 확인하고 수정하고 있습니다.

  • 다양한 멀티 Host를 구성하여 Docker Swarm 환경을 실습하기 위해 Dind(Docker in Docker) 형식의 이미지를 제공하고 있습니다.

    • Dind 이미지는 교육 제공자에 의해 MacOS Intel chip, MacOS Apple chip, Windows 10, Windows 11, Ubuntu 버전으로 제공하고 있습니다. 단, 수강생이 사용하시는 환경에 따라 Dind 이미지 실행에 오류가 발생할 수 있습니다.


  • 본 강의에서의 사용되는 실습 환경을 위해 Dind 이미지 사용이 아닌, VM 환경을 구성하여 실행할 수 있도록, 별도의 제공되는 인프런 강의를 무료로 참고하실 수 있습니다.

학습 자료

  • 강의에 사용된 실습 예제 코드는 Github을 통해 공유 됩니다.

  • 강의에 사용된 교안은 PDF 형태로 제공 됩니다. (현재 변환 작업 중)

선수 지식 및 유의사항

  • IT 서비스에 대한 기본적인 지식

  • Client, Server, Cloud 와 같은 용어에 대한 이해

  • 웹 서비스 및 웹 애플리케이션에 대한 기본적인 이해 (의미와 작동 과정)

  • Windows 환경 사용자) CMD 명령어 (dir, curl, ping, ipconfig 등)

  • MacOS 환경 사용자) Terminal 명령어 (ls, curl, ping, ifconfig 등)

  • 공통) Linux 환경의 문서 편집 툴인 VIM를 수업시간에 사용하기 때문에 기본적인 사용법을 익히시면 강의를 수강하시는데에 더 효율적일 것 같습니다.

💡본 강의에서 사용되는 실습 예제를 실행하기 위해 다음의 프로그램이 설치 되어 있어야 합니다.

  1. 실습 환경

    • 운영 체제 및 버전(OS): Windows 10, Windows 11 가능, MacOS Intel chip, MacOS Apple chip 가능

    • 사용 도구: 각 운영체제에 맞는 Docker Desktop 설치 (강의에서 설치 과정에 대해 실습 함)

    • 에디터: Visual Studio Code

    • PC 사양: CPU Intel i5+, 메모리 8GB+ (16GB 이상 권장), 디스크 100GB+이 프로그램 구동을 위한 최소 사양입니다.

  2. 학습 자료

    • 제공하는 학습 자료는 실습 예제와 PDF 교안은 Github을 통해 제공 될 예정입니다.

    • 전체 11 Section으로 구성 되어 있습니다.

  3. 선수 지식 및 유의사항

    • 학습 난이도: 초급 과정으로 IT 서비스에 대한 기본적인 지식과 명령 프롬프트나 터미널에서의 기본적인 명령어 사용


    • 강의에 대한 질문에 대해서 질문 게시판을 활용해 주시기 바랍니다.

    • 강의 콘텐츠 및 실습 예제에 대한 업데이트는 추후 업데이트 관련 게시글을 통해 공유해 드립니다.

    • 본 강의에 사용된 실습 예제 및 강의 내용에 대해선는 강의 제공자에게 저작권이 있습니다. 강의에서 사용된 내용과 실습 예제를 인터넷을 통해 공유하는 것은 자유이나, 가능하면 사전에 공유 후에 공개하시길 부탁드립니다.


이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 컨테이너 가상화 기술에 관심이 있는 사람

  • Cloud Native 기술에 관심이 있는 사람

  • MSA 애플리케이션에 배포, 운영을 담당하는 사람

  • CI/CD환경에 컨테이너 가상화 기술을 적용하고 싶은 사람

선수 지식,
필요할까요?

  • IT 서비스에 대한 이해

  • 클라우드 서비스에 대한 이해

  • Windows 환경 사용자) CMD 명령어 (dir, curl, ping, ipconfig 등)

  • MacOS 환경 사용자) Terminal 명령어 (ls, curl, ping, ifconfig 등)

저는 IT 엔지니어입니다. 언젠가 직업란에 "회사원?", "개발자?", "강사?" 어떤 단어를 선택해야 할 지 고민이 되었던 때가 있었습니다. 그러다가, IT 엔지니어라는 표현이 제가 잘 어울리는 직업명이라는 생각이 들어 지금까지도 직업란에는 "IT 엔지니어"라고 적고 있습니다.

직업이라는 것은 자신의 일을 나타내는 것이고, 일이라는 것은 재미있고, 도움이 되는 일이면 좋겠다는 생각을 가지고 있습니다. 누구나 다 원하는대로 일을 하며 살수는 없지만, 저는 제가 하는 있는 이 일을 좋아하는 있고, 잘하고 싶어하는 사람입니다. 개발자로써, 강사로써, 컨설턴트로써의 역할을 해 오면서, 매번 새롭게 출시되고 변화하는 IT 신기술을 따라가기에 급급하지만, 그래도, 남들보다 조금이라도 먼저 접하고, 전파하고, 사용하고 싶은 사람 중 한명입니다. 

최근 관심을 가지고 있는 분야는 온라인 교육 컨설팅입니다. 그리고 관심있는 기술은 Cloud Native Architecture, Blockchain, Machine Learning, Kafka, Kuberbetes 등입니다. 이러한 기술은 실제로 강의도 하고 있고 업무에 적용해서 사용도 하고 있습니다. 하지만, 워낙 방대한 주제이다 보니, 아직까지도 계속 공부하고 있습니다.

머리속에 가지고 있는 것은 진정한 지식이 아니라고 합니다. 저는 제가 가진 지식과 경험을 다양한 방벙을 통해 공유하려 합니다. 그리고, 새로운 분야, 새로운 기술에 계속 도전하고 있는 IT 엔지니어가 될 것입니다.  

 

 

  • ) 엔제이원컴퍼니 대표 
  • ) 동국대학교 국제정보대학원 정보보호학과 대우교수
  • ) JP Mogan Chase AMJ Tech consultant (일본)
  • ) 삼성 SDS CMS 사업본부 책임 엔지니어

 

 

커리큘럼

전체

113개 ∙ (20시간 31분)

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!