Part 1 : 도입 및 설정

환영합니다! Docker 사용법을 배우고 싶어한다니 정말로 좋습니다.

6개의 파트로 구성된 튜토리얼을 하게 될 것 입니다.

  1. 도입 및 설정 (지금 보는 페이지)
  2. 첫번째 어플리케이션을 빌드하고 실행하기
  3. 어플리케이션을 확장가능한 서비스로 변경하기
  4. 서비스를 여러 시스템에 확장하여 제공하기
  5. 데이터 처리를 통하여 방문자수 카운터 추가하기
  6. 운영환경에 Swarm을 배포하기

어플리케이션 자체는 매우 간단하므로 코드가 어떻게 동작하는지에 대해서는 너무 걱정하실 필요가 없습니다. 튜토리얼이 끝나면 어플리케이션이 무엇을 수행하던지 Docker가 어떻게 빌드하고 적재한 뒤 실행하는 것을 배우게 되며 그 가치를 느끼게 될 것 입니다.

사전필요사항

Docker의 개념에 대해서 배울 것 이지만, Docker가 무엇이며, 왜 사용하는지에 대해서는 미리 알아두면 좋습니다.

또한, 아래의 개념에 대해서 알고 있으면 좋습니다.

  • IP 주소 및 포트
  • 가상 머신
  • 설정파일 수정
  • 코드 종속성 및 빌드에 관하여 기본적인 개념
  • 시스템 자원 사용 조건: CPU 백분율, RAM 사용량 등

Container에 대한 간략한 설명

Image는 소프트웨어를 실행할 수 있도록 모든것(코드, 런타임, 라이브러리, 환경변수, 설정파일)을 포함한 가볍고 독립적으로 수행이 가능한 패키지입니다.

Container는 Image의 실행 인스턴스 입니다 - Image가 실제로 수행되어 메모리에 올라온 상태. 기본적으로는 Host 환경과는 완벽하게 독립적으로 수행합니다. 단, 설정에 따라 파일 또는 포트에 접근 가능합니다.

Container는 Host의 커널위에 네이티브하게 어플리케이션을 실행합니다. Hypervisor를 통하여 Host 자원에 접근하는 가상머신과는 다르게 성능 측면으로 우월합니다. Container는 네이티브 접근을 할 수 있고, Discrete 프로세스 위에 수행되며 다른 실행환경보다 메모리를 적게 사용합니다.

Containers VS. 가상머신

가상머신 다이어그램

가상머신은 각각의 머신에 Guest OS를 수행합니다. OS의 설정, 시스템에 설치된 종속성, OS 보안패치, 쉽게 손실되며 복제하기 어려운 임시영역 등으로 인하여 디스크 이미지와 어플리케이션 상태 결과가 자원집약적으로 변하게 됩니다.

Container 다이어그램

Container는 한개의 커널을 공유하며 Container Image에는 Host 시스템에 설치할 필요가 없는 실행파일 및 패키지 종속성에 대한 정보만 있습니다. 이 프로세스들은 네이티브 프로세스처럼 실행하며, Linux에서 실행중인 프로세스를 보는 ps 명령과 같이 docker ps 명령을 통하여 각각의 Container를 관리할 수 있습니다. Container에 모든 종속성을 포함하고 설정이 얽힐 필요가 없기 때문에, Container화 한 어플리케이션은 "어느 환경에서도 실행가능합니다"

설치하기

시작하기 전에, 최신버전의 Docker를 설치해야합니다.

Note: 1.13 버전 이상이 필요합니다.

docker run hello-world 명령을 실행하고 다음과 같은 결과를 볼 수 있어야 합니다.

Note: sudo 없이 docker 명령을 실행하려면 다음을 참고하시기 바랍니다.

$ docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
...(snipped)...

docker --version 명령을 통하여 사용하고 있는 버전이 1.13버전 이상인지 확인하시기 바랍니다.

$ docker --version
Docker version 17.09.0-ce, build afdb6d4

최종 확인이 되면 모든 준비가 끝났습니다.

결론

독립적으로 실행가능한 단위의 규모는 매우 광범위한 영향을 미칩니다. 즉, CI/CD는 분산 어플리케이션의 모든 부분에 대한 업데이트를 배포할 수 있고, 시스템 종속성은 문제가 되지 않으며, 리소스는 점점 밀집하게 됩니다. 확장에 대한 것은 이제 VM Host를 추가하는 것이 아닌 새로운 실행파일을 추가하는 문제가 되는 것 입니다.

앞으로 모든 것을 배울 것 입니다. 하지만 천천히 하나부터 배워보도록 하겠습니다.

results matching ""

    No results matching ""