19
Docker https://www.docker.com/

Docker Intro

Embed Size (px)

Citation preview

Dockerhttps://www.docker.com/

기존 소프트웨어 배포 방식, 인프라의 문제점

배포 환경마다 설치된 커널 버전, 설치된 라이브러리 등 상이함

서버를 중단시켜 수정된 버전으로 올려서 다시 빌드

개발자들의 전통적인 변명 "내 컴퓨터에서는 잘 돌아가는데?"

서버 환경이 늘어나는 경우, 일일이 설치해주는 것도 힘듬

Docker?

도커란, 오픈소스 컨테이너이다.기존의 가상머신과 비슷하면서도 훨씬 가벼운 형태

Docker‑Machine, Docker‑Compose

Docker Toolbox, Boot2Docker

DockerHub, Docker‑Registry

Docker Swarm

Docker vs VirtualMachine

리눅스 커널의 cgroups, namespaces를 사용해 가상공간을 생성

Container

가상머신을 사용하게 되면 상세 설정을 해주지 않는 한 메모리, CPU 코어, 프로세스 등 각종 성능 손실이 발생

컨테이너는 Host OS의 커널은 그�로 사용하고 일부분만 패키징 되기때문에 용량이 크게 줄어들 뿐만 아니라, 프로세스 Ý역도 기존의 OS와공유해서 사용

컨테이너는 하드웨어를 가상화하는 계층이 없기 때문에 메모리 접근, 파일시스템, 네트워크 속도가 가상 머신에 비해 월등히 빠름.

Docker Architecture

Docker Install

컨테이너 기능은 리눅스 커널에서만 지원하기 때문에 Windows나 OS X에서실행 불가능, 따라서 가상머신에 리눅스를 설치하고 그 위에 Docker를 실행

Docker Engine: Docker가 탑재된 기본 엔진

Docker CLI: Command Line Interface

Docker‑Compose: 설정파일(Dockerfile)로 컨테이너를 관리

Docker‑Machine: 로컬에 Docker 호스트를 구성

Docker Install

1. Boot2Docker15년 9월부터 Deprecated

2. Docker for MacHyperKit 이라는 macOS를 위한 경량화 가상머신을 사용

Mac Application으로 관리하여 편함

3. Docker ToolboxOracle의 VirtualBox를 통해 가상화

기존에 써왔던 VirtualBox를 꼭 써야하는 경우

Docker Command

# 상태 확인하기docker psdocker images

# 이미지 받아오기docker search nginxdocker pull nginx

# 컨테이너 실행하기docker run -d -p 80:80 --name webserver nginx

# 컨테이너 중지/재실행하기docker stop webserverdocker restart webserverdocker start webserver

# 컨테이너/이미지 삭제하기docker rm -f webserverdocker rmi webserver

How to use1. DockerHub : https://hub.docker.com/

2. Dockerfile : https://docs.docker.com/engine/reference/builder/

3. Docker‑Registry : https://docs.docker.com/registry/

DockerHub란?

도커 컨테이너를 관리하고 공유하기 위한 SAAS로GitHub 처럼 이미지를 올려서 공유하거나 내려받을 수 있음

1개의 private repo, 여러 개의 public repo 제공

Dockerfile

# Pull imageFROM centos:latestMAINTAINER Swalloow "[email protected]"

# Running on imageRUN yum update -yRUN yum install python-pip python-dev build-essential

# Running on containerCOPY . /appWORKDIR /appRUN pip install -r requirements.txtENTRYPOINT ["python"]CMD ["app.py"]

docker build ./ : 현재 디렉토리의 Dockerfile을 찾아서 빌드

Docker Registry란?

설치형 Private Docker 저장소 (Flask 기반)DockerHub가 GitHub이라면, Docker Registry는 GitLab 같은 존재

https://github.com/docker/docker‑registryhttps://github.com/docker/distribution

docker pull registrydocker run --name local -d -p 5000:5000 registry

Docker Registry image to S3

나는 정말 AWS를 좋아하고 이미지가 안전해야 마음이 놓인다...

Docker Usecase

Docker로 웹 서비스 무중단 배포하기

AWS EC2 Container Registry

AWS EC2 Container Service

Docker로 모든 어플리케이션을 컨테이너로 만든다면 서버는 Docker를돌리기 위해 존재할 뿐이다

https://swalloow.github.io/docker‑install

https://swalloow.github.io/docker‑command