[Cloud] 배포 컨테이너(도커)

see1237·2022년 10월 5일
0

Section4

목록 보기
6/13

Docker

실행 환경에 구애받지 않고 애플리케이션을 실행할 수 있다

  • 컨테이너 방식 장점

    • 의존성 충돌 문제를 해결해 준다.

      • 프로세스
        • 특정 컨테이너에서 작동하는 프로세스는 기본적으로 그 컨테이너 안에서만 액세스할 수 있다.
        • 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에게 영향을 줄 수 없다.
      • 네트워크
        • 기본으로 컨테이너 하나에 하나의 IP 주소가 할당되어 있다.
      • 파일 시스템
        • 컨테이너 안에서 사용되는 파일 시스템은 구획화되어 있다. 그래서 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한할 수 있다.

      개발과 배포 환경을 일치시킨다.

      • OS에 상관없이 즉시 애플리케이션 실행 환경을 만들 수 있다.
      • 개발을 컨테이너 위에서 진행할 경우, 모든 개발팀이 동일한 환경 하에 개발을 진행할 수 있다.

      수평 확장을 쉽게 해주고, 각 서버에 새로운 내용을 배포하기 쉽게 만들어준다.

      • 서버 증설시, 동일한 애플리케이션 구성(이미지)을 바탕으로 새로운 서버에 해당 애플리케이션을 컨테이너로 실행하고, 로드 밸런서(리버스 프록시의 한 종류)에 이 서버를 추가하기만 하면 된다.
      • 쿠버네티스와 같이 오케스트레이션 도구라고 부르는 것들을 이용해, 새로운 버전의 애플리케이션을 여러 서버 중 몇 대에만 운영하여 테스트하는 것이 가능하다. 이는 결국 컨테이너 기술 덕분에 가능한 것이다.
  • 키워드

    • 이미지
      • 애플리케이션 및 애플리케이션 구성을 함께 담아놓은 템플릿
      • 이미지 구분
        • 레지스트리(Registry)
          • 도커 이미지를 관리하는 공간. 이미지는 레지스트리에 저장된다.
          • 특별히 다른 것을 지정하지 않는다면, 도커 허브(Docker Hub)를 기본 레지스트리로 설정한다.
          • 레지스트리는 Docker Hub, Private Docker Hub, 회사 내부용 레지스트리 등으로 나뉠 수 있다.
        • 레포지토리(Repository)
          • 레지스트리 내에 도커 이미지가 저장되는 공간
          • 이미지 이름이 사용되기도 한다.
        • 태그(Tag)
          • 같은 이미지라고 할지라도 버전 별로 안의 내용이 조금은 다를 수 있다.
          • 해당 이미지를 설명하는 버전 정보를 주로 입력한다.
          • 특별히 다른 것을 지정하지 않는다면 latest 태그를 붙인 이미지를 가져온다.

컨테이너 vs VM(가상머신)

  • 도커 컨테이너
    • OS를 포함하고 있지 않다.
    • 각 컨테이너는 호스트 OS의 커널(Kernel, 시스템 콜과 같이 OS의 핵심 기능을 구현한 프로그램)을 공유
  • VM
    • 구성 요소에 OS가 존재

Docker 실습

  • Docker 컨테이너에 파일을 복사하기
    1. 웹 서버는 도커 컨테이너로 실행
    2. 웹 서버를 구성하는 파일은 직접 만들거나 가져온 파일 구성

    로컬에 있는 파일과 도커 이미지를 연결하는 방법은 크게 CP(Copy) 를 이용하는 방법과 Docker Volume 기능을 이용하는 방법으로 나뉜다.

    • CP(Copy) : 호스트와 컨테이너 사이에 파일을 복사(Copy)
    • Volume : 호스트와 컨테이너 사이에 공간을 마운트(Mount)
      - 마운트는 저장 공간을 다른 장치에서 접근할 수 있도록 경로를 허용해서, 마치 하나의 저장 공간을 이용하는 것처럼 보이게 하는 작업
  • Docker 이미지 만들기
    만든 Docker Container를 이미지 파일로 변환한다.
    1. 구동한 Docker Container를 이미지로 만드는 방법
    docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    2. Dockerfile 생성 후 Docker Image 빌드

    # Dockerfile 예시 (이미지 파일의 설명서)
    FROM httpd:2.4 # 베이스 이미지를 httpd:2.4 로 사용
    COPY ./ /usr/local/apache2/htdocs/ # 호스트의 현재 경로에 있는 파일을 생성할 이미지 /usr/local/apache2/htdocs/ 에 복사
  • 두 개의 Docker Image 다루는 방식

    • docker-compose.yml(yaml) 파일 생성
      • 클라이언트, 서버 데이터베이스 각 연결을 코드로 표현
      • 하나의 docker-compose에서 관리되는 컨테이너끼리는 동일한 docker network에서 구동된다.
    • docker-compose up을 통해 컨테이너 구동

0개의 댓글