데이터과학 삼학년

Docker (feat.GCP) 본문

DevOps

Docker (feat.GCP)

Dan-k 2020. 1. 13. 14:24
반응형

Docker

- Docker는 container 개념으로 가상공간(VM)안에서 Container를 만들어 그안에 image를 넣고 워크를 할 수 있음

 

가상 머신 vs Docker

- 가상 머신은 컴퓨터 하드웨어를 가상화 (하드웨어 전체 추상화)

  > 하이퍼바이저 사용, 추가 OS 필요 등 성능 저하 이슈 존재

- Docker는 운영체제 레벨에서 별도로 분리된 실행환경을 제공 (커널 추상화)

  > 마치 리눅스 처음 설치했을 때와 유사한 실행환경을 만들어주는 리눅스 컨테이너 기술 기반

  > 리눅스 컨테이너 기술이므로 macOS나 Windows에 설치할 경우는 가상 머신 기반 제공

 

- Docker는 경량 이미지로 실행환경을 통째로 백업, 실행 가능 (실무에 많이 사용됨)

- Data Engineering에서 Docker로 시스템 환경 설정 + 프로그램을 한번에 배포

 - 예: 프로그램 업데이트 → Docker 이미지 작성 → Jenkins로 배포

 

실습을 통한 Docker 이해

  • Docker 기초

    • $ docker run hello-world

      • docker 데몬이 hellow-world라는 이미지를 검색했으나 찾지 못했고, docker hub라는 공개 레지스트리에서 이미지를 가져와 컨테이너를 생성하고 컨테이너를 실행함

    • $ docker images

      • 생성된 docker image를 확인함

      • Docker 데몬이 로컬에서 이미지를 찾을 수 없으면 기본적으로 공개 레지스트리에서 이미지를 검색

    • $ docker ps

      • 실행중인 docker container 를 확인

      • 실행이 종료된 컨테이너를 포함한 모든 컨테이너를 보려면 $docker ps -a

  • Docker 컨테이너 빌드, 실행, 디버그

    • Dockerfile 만들기

    • node application인 app.js 만들기

    • Docker build ( Dockerfile이 있는 디렉토리에서 실행해야 함)

      • $ docker build -t node-app:0.1 . 

        • title이 node-app 태그는 0.1 인 녀석을 현재 디렉토리에 만드는 것

        • tag를 달아줘야 최신 이미지와 기존 이미지를 구분하기 쉬워짐

        • 왜냐면 tag default 값은 latest이기 때문

    • Docker image 확인

      • $ docker images

        • node는 기본 이미지이고 node-app은 사용자가 빌드한 이미지. node를 제거하려면 우선 node-app을 제거해야함. 이미지의 크기는 VM에 비해 상대적으로 작음 node:slimnode:alpine과 같은 노드 이미지의 다른 버전을 사용하면 더 작은 이미지를 제공하여 이식성을 높일 수 있음

    • Docker run

      • $ docker run -p 4000:80 --name my-app node-app:0.1

        • 4000 port로 받아서 node.js설정한 80 port로 전환하여 run해라.

          • 컨테이너의 포트 80에 호스트의 포트 4000을 매핑하도록 지시하는 플래그

        • my-app 이란 이름으로 node-app:0.1을 실행하라

  • Docker 이미지를 Google Container Registry로 푸시하기

 

728x90
반응형
LIST
Comments