22
Docker 사사사사사 rocksea

Docker 사용가이드 public v0.1

Embed Size (px)

Citation preview

Page 1: Docker 사용가이드 public v0.1

Docker 사용가이드rocksea

Page 2: Docker 사용가이드 public v0.1

1. 목적2. 개요3. 설치방법4. 사용방법5. Q&A

목차

Page 3: Docker 사용가이드 public v0.1

Docker 도입을 위한 가이드 .

1. 목적

Page 4: Docker 사용가이드 public v0.1

2. 개요 (1/8)가상화란 ?- 컴퓨터 리소스를 추상화하는 광범위한 기술 .- 전가상화 , 반가상화가 존재 , 가상화 방식에 따른 Hosted Hypervisor, bare-metal Hypervisor 가 존재 .- 일반적으로 사용하는 가상화 기술은 x86 프로세서를 가상화 하는 방식을 사용 .(Intel, AMD 등 )- 각 OS 의 X86 CPU 명령어 집합 (Instruction Set) 의 Operation 이 다르기때문에 명령어를 가상화 (instruction set virtualization) 하는 방법 , 또는 바이너리를 변환하는 방법이라고 할 수 있다 .- CPU VT(Virtualizaion Technology) 기능을 지원하지 않으면 사용할수가 없음 . (BIOS 에서 가능여부 확인 )- Cloud 플랫폼이 대중화되면서 AWS, Openstack 등 가상화는 이제 다양한 서버 인프라 구성의 핵심기술 .

Page 5: Docker 사용가이드 public v0.1

2. 개요 (2/8)

그러한 연유로 각 OS 이미지엔 CPU 아키텍쳐의 이름이 명시되어있다 .

Page 6: Docker 사용가이드 public v0.1

2. 개요 (3/8)애플도 Intel CPU(x86 Architecture) 를 사용하면서 Windows 사용이 가능해짐 .( 반대로 Windows 에서도 OSX 가상머신 설치가 가능해졌다는 의미 )

Page 7: Docker 사용가이드 public v0.1

2. 개요 (4/8)

Docker is Not Virtual Machine

Page 8: Docker 사용가이드 public v0.1

2. 개요 (5/8)

가상화인듯 가상화아닌 가상화같은 너 .

개발환경의 격리( 독립된 프로세스로 실행 )

H/W 가상화( 독립된 운영체제로 실행 )

Page 9: Docker 사용가이드 public v0.1

2. 개요 (6/8)DevOps 의 시대 , 중심은 Docker, AWS 에서도 공식 지원 .

Page 10: Docker 사용가이드 public v0.1

2. 개요 (7/8)

Docker 는 가상화가 아닌 Container 기반이다 .

program -> run -> process

image -> run -> container

Page 11: Docker 사용가이드 public v0.1

2. 개요 (8/8)Docker 는 Go 언어로 작성되었다 .(http://www.slideshare.net/jpetazzo/docker-and-go-why-did-we-decide-to-write-docker-in-go), 초기버전은 LXC(LinuX Container) 기반으로 개발되었으며 ,Linux 에서만 동작하였으나 , 현재는 자체 가상머신 docker-machine 을 개발하여다양한 OS (osx, windows) 에서도 사용가능하다 . (docker-machine = Linux 가상머신 )

Docker Architecture 구성도

Page 12: Docker 사용가이드 public v0.1

3. 설치방법1. Toolbox 다운로드 : https://www.docker.com/products/docker-toolboxTool Box 에 포함된 패키지- Docker CLI client for running Docker Engine to create images and containers- Docker Machine so you can run Docker Engine commands from Mac OS X terminals- Docker Compose for running the docker-compose command- Kitematic, the Docker GUI- the Docker QuickStart shell preconfigured for a Docker command-line environment- Oracle VM VirtualBoxBecause the Docker Engine daemon uses Linux-specific kernel features, you can’t run Docker Engine natively in Windows (or OS X)( 결국 Docker 는 Linux 위에서 돌아간다 .)

2. 설치 가이드 문서 Windows : https://docs.docker.com/toolbox/toolbox_install_windows/ (64bit 윈도우 7 or higher) OSX : https://docs.docker.com/toolbox/toolbox_install_mac/

Page 13: Docker 사용가이드 public v0.1

4. 사용방법 (1/9)1. Docker Machine 생성Linux 의 경우 Docker Machine 이 필요없으므로 이 부분은 생략 가능하다 .- Toolbox 설치 후 Docker QuickStart Terminal 을 이용하면 Default 로 생성된다 .

- command line 으로 생성할경우$ docker-machine create --driver virtualbox name

2. Docker Machine 접속- Docker Machine ssh 접속$ docker-machine ssh name

Page 14: Docker 사용가이드 public v0.1

4. 사용방법 (2/9)3. Docker Image 생성 및 조회Docker Container 를 실행하기 위해 Image 생성 .- Docker Registry 에 등록된 Image 를 받는 방법$ docker pull jenkins

- Docker Image 조회$ docker images

Page 15: Docker 사용가이드 public v0.1

4. 사용방법 (3/9)4. Docker Container 실행 및 조회- Docker Container 실행$ docker run -u jenkins -p 8080:8080 -p 50000:50000 -v /home/service/jenkins jenkins

- Docker Container 조회$ docker ps -a

- Docker Container 시작$ docker start container-id

- Docker Container 종료$ docker stop container-id

Page 16: Docker 사용가이드 public v0.1

4. 사용방법 (4/9)5. Docker Image 원격 저장소 등록Docker Cloud 에 가입한 뒤 원격 저장소를 사용할 수 있다 . 기본적으로 Github 사용법과 유사하다 .(https://cloud.docker.com/_/dashboard/onboarding)

- Docker Container Commit 으로 Snapshot 저장운영중인 Container 를 Snapshot 을 뜬 후 Image 로 저장 .$ docker commit container-id

-Docker 원격저장소 인증$ docker login

Page 17: Docker 사용가이드 public v0.1

4. 사용방법 (5/9)- Docker Image PushCommit 한 Image snapshot 을 원격 저장소에 Push 한다 .$ docker push user/repository:tag

Commit 한 Image snapshot 을 원격 저장소에 Push 한다 .$ docker push user/repository

- Docker Image Pull$ docker pull user/repository:tag

Page 18: Docker 사용가이드 public v0.1

4. 사용방법 (6/9)6. Dockerfile 을 이용한 빌드방법- Dockerfile 작성 예FROM ubuntu:14.04

ENV NPM_CONFIG_LOGLEVEL infoENV NVM_VERSION 0.11.1ENV NODE_VERSION 4.3.1

RUN \ sed -i 's/# \(.*multiverse$\)/\1/g' /etc/apt/sources.list && \ sed -i 's/archive.ubuntu.com/ftp.daumkakao.com/g' /etc/apt/sources.list && \ apt-get update && \ apt-get -y upgrade && \ apt-get install -y build-essential && \ apt-get install -y software-properties-common && \ apt-get install -y byobu curl git htop man unzip vim wget && \ rm -rf /var/lib/apt/lists/* \

RUN curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -RUN apt-get install -y nodejs && apt-get -y install npm

RUN mkdir -p /home/service/chatADD chat /home/service/chatWORKDIR /home/service/chat

RUN npm install -d#RUN npm install pm2 -g

EXPOSE 8080:8080CMD [ "nodejs", "index.js" ]

Page 19: Docker 사용가이드 public v0.1

4. 사용방법 (7/9)- Dockerfile build 를 통해 이미지 생성$ docker build -t nodejs .

- 생성된 이미지 확인

Page 20: Docker 사용가이드 public v0.1

4. 사용방법 (8/9)7. Docker Compose 사용법 .docker-compose 를 이용하면 하나의 서비스를 여러개의 Container 로 분리하여 운영할 수 있다 .(https://docs.docker.com/compose/install/)- docker-compose.yml 작성 예

version: '1'services: redis: image: redis:latest ports: - "6379:6379" restart: always

nodejs: image: nodejs:latest ports: - "8080:8080" depends_on: - redis links: - redis restart: always

Page 21: Docker 사용가이드 public v0.1

4. 사용방법 (9/9)- Container 생성$ docker-compose up -d

- Container 삭제$ docker-compose down

- Container 시작$ docker-compose start

- Container 종료$ docker-compose stop