ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1. 쿠버네티스 환경 구축하자 - 도커란
    infra 2020. 7. 22. 01:58

    도커란

    도커의 장점은 무엇일까. 아마 조금더 운영환경과 프로덕션과 비슷한 환경을 만들어준다는것입니다. 보통 운영환경에 배포만 하면 개발환경에서 없던 오류를 맞단 뜨리게 된다. 이러한 문제는 재현을 하는것자체가 어렵습니다. 컨테이너 기술은 강화를 통해 이러한 문제를 만나지 않게해주는데 큰도움을 주는 역할을 합니다. 도커는 이 컨테이너를 쉽게 구성해주는 시스템입니다.

    그런데 이러한 구성은 가상화로도 가능합니다. 그럼 가상화와 컨테이너의 차이는 무엇일까요. 컨테이너 가상화 기술은 게스트 운영체제 없이 호스트 운영체제위에 격리된 환경에서 가상화를 구현한다는것입니다. 게스트 운영체제가 따로 존재하지 않으니 호스트 운영체제의 요소를 공유하며 그만큼 중복되는 요소가 줄어 성능적으로 장점을 가지게 됩니다.

    이제 도입이 길었습니다. 실제 우리는 이시리즈에서 어떤것을 구현하느냐... 애플리케이션 개발 및 배포를 해보겠습니다. 크게 주제는 아래와같습니다

    1. 도커와 컨테이너기술에 대한 스터디
    2. 컨테이너 오케스트레이션 개념 스터디 및 개발
    3. 도커를 통한 배포시스템 구축

    도커의 기초

    도커는 컨테이너형 가상화를 구현하기 위한 상주 애플리케이션과 이를 관리하는 명령형 도구로 구성된다. 도커를 본격적으로 다뤄보기전에 도커 용어에 대해 알아보겠습니다

    컨테이너형 가상화기술

    도커는 컨테이너형 가상화기술을 사용합니다.

    컨테이너형 가상화 기술을 사용하면 가상화 소프트웨어 없이도 운영체제의 리소스를 격리해 가상운영체제로 만들 수 있다. 이것을 컨테이너라고 한다.

    https://i.imgur.com/jgLqQUQ.png

    애플리케이션이 중심이 되는 도커

    게스트 운영체제를 띄우지 않는다는 면에서 가상화 운영체제보다는 이미 성능적으로 우위를 잡았다. 도커의 장점은 아래와같다.

    • 호스트 운영체제의 영향을 받지 않는 실행환경
    • DockerFile을 이용한 컨테이너 구성및 애플리케이션 배포
    • 이미지 버전관리
    • 레이어 구조를 갖는 이미지 배포 (빌드가 새밀함)
    • 도커 레지스트리

    Docker 컨테이너 정보는 Docker코드로 관리 될 수 있다. 이코드를 기반으로 복제 및 배포가 이루어지기 때문에 재현성이 높은것이 특징이다. 기존 배포 방식은 각각에 배포되는 호스트 운영체제 영향을 많이 받았다. 쉽게 말해 배포되는 환경이 달랐다. 도커 방식은 환경을 복사하여 배포하기때문에 dev환경과 real 환경이 동일하다.

    도커 스타일 체험하기

    설명만으로 애플리케이션과 실행환경을 함께 배포하는 도커 스타일의 배포방식이 잘이해되지 않을 수 있으니 간단한 예제를 진행해보겠다. 아래와같은 쉡스크립트가 있다.

    #!/bin/bash
    
    echo "Hello, world!"

    이것을 Docker container에 담아 보겠다.

    FROM ubuntu:16.04 // 컨테이너의 틀 역할을할 운영체제를 정의 하는것이다.
    
    COPY helloworld /usr/local/bin //위에서 만든 쉘파일을 도커 컨테이너안에넣는다.
    RUN chmod +x /usr/local/bin //RUN 명령어는 어떤 명령을 수행하기 위한 명령어이다.
    RUN chmod +x /usr/local/bin/helloworld
    
    CMD ["helloworld"] // 완성된 이미지를 도커 컨테이너로 실행하기전에 먼저 실행할 명령어를 정의하는것

    이 dockerfile을 사용해 이미지를 빌드하고 실행해보자

    $ docker image build -t helloworld:latest .

    빌드가 끝난 다음 docker container run 명령으로 더커 컨테이너를 실행하는것이 기본 사용법이다.

    docker container run helloworld:latest

    이런 방식으로 더커 이미지에 애플리케이션에 필요한 파일을 운영체제와 함께 담아서 컨테이너 형태로 실행하는것이 기본적인 스타일이다. 이예제는 쉘스크립트를 우부툰 운영체제와 함께 컨테이너로 실행한것이다.

    댓글

Designed by Tistory.