일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- spark udf
- correlation
- 상관관계
- BigQuery
- TensorFlow
- 유튜브 API
- GenericGBQException
- Counterfactual Explanations
- top_k
- 공분산
- XAI
- airflow subdag
- subdag
- session 유지
- grad-cam
- Airflow
- hadoop
- API Gateway
- UDF
- tensorflow text
- chatGPT
- gather_nd
- login crawling
- API
- GCP
- flask
- integrated gradient
- Retry
- youtube data
- requests
- Today
- Total
데이터과학 삼학년
Docker (feat.GCP) 본문
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:slim 및 node: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로 푸시하기
-
docker push gcr.io/[project-id]/node-app:0.2
-
gcp 콘솔에서 도구 > Container Registry로 이동하거나 http://gcr.io/[project-id]/node-app을 방문하여 확인
'DevOps' 카테고리의 다른 글
jenkins workspace cleanup 설정 (0) | 2020.05.08 |
---|---|
Docker 명령어 정리 (3) | 2020.04.07 |
Crontab (스케쥴러 설정) (0) | 2020.03.26 |
Jenkins scripted pipeline (젠킨스 스크립트 파이프라인) (0) | 2020.01.10 |
프로젝트 운영_RSA 암호 세팅(feat.ssh-keygen) (0) | 2020.01.09 |