Upload
junyoung-park
View
68
Download
1
Embed Size (px)
Citation preview
기존 소프트웨어 배포 방식, 인프라의 문제점
배포 환경마다 설치된 커널 버전, 설치된 라이브러리 등 상이함
서버를 중단시켜 수정된 버전으로 올려서 다시 빌드
개발자들의 전통적인 변명 "내 컴퓨터에서는 잘 돌아가는데?"
서버 환경이 늘어나는 경우, 일일이 설치해주는 것도 힘듬
Docker?
도커란, 오픈소스 컨테이너이다.기존의 가상머신과 비슷하면서도 훨씬 가벼운 형태
Docker‑Machine, Docker‑Compose
Docker Toolbox, Boot2Docker
DockerHub, Docker‑Registry
Docker Swarm
Container
가상머신을 사용하게 되면 상세 설정을 해주지 않는 한 메모리, CPU 코어, 프로세스 등 각종 성능 손실이 발생
컨테이너는 Host OS의 커널은 그�로 사용하고 일부분만 패키징 되기때문에 용량이 크게 줄어들 뿐만 아니라, 프로세스 Ý역도 기존의 OS와공유해서 사용
컨테이너는 하드웨어를 가상화하는 계층이 없기 때문에 메모리 접근, 파일시스템, 네트워크 속도가 가상 머신에 비해 월등히 빠름.
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로 모든 어플리케이션을 컨테이너로 만든다면 서버는 Docker를돌리기 위해 존재할 뿐이다
https://swalloow.github.io/docker‑install
https://swalloow.github.io/docker‑command