Upload
steve-shim
View
217
Download
4
Embed Size (px)
Citation preview
Docker 사용가이드rocksea
1. 목적2. 개요3. 설치방법4. 사용방법5. Q&A
목차
Docker 도입을 위한 가이드 .
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 등 가상화는 이제 다양한 서버 인프라 구성의 핵심기술 .
2. 개요 (2/8)
그러한 연유로 각 OS 이미지엔 CPU 아키텍쳐의 이름이 명시되어있다 .
2. 개요 (3/8)애플도 Intel CPU(x86 Architecture) 를 사용하면서 Windows 사용이 가능해짐 .( 반대로 Windows 에서도 OSX 가상머신 설치가 가능해졌다는 의미 )
2. 개요 (4/8)
Docker is Not Virtual Machine
2. 개요 (5/8)
가상화인듯 가상화아닌 가상화같은 너 .
개발환경의 격리( 독립된 프로세스로 실행 )
H/W 가상화( 독립된 운영체제로 실행 )
2. 개요 (6/8)DevOps 의 시대 , 중심은 Docker, AWS 에서도 공식 지원 .
2. 개요 (7/8)
Docker 는 가상화가 아닌 Container 기반이다 .
program -> run -> process
image -> run -> container
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 구성도
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/
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
4. 사용방법 (2/9)3. Docker Image 생성 및 조회Docker Container 를 실행하기 위해 Image 생성 .- Docker Registry 에 등록된 Image 를 받는 방법$ docker pull jenkins
- Docker Image 조회$ docker images
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
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
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
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" ]
4. 사용방법 (7/9)- Dockerfile build 를 통해 이미지 생성$ docker build -t nodejs .
- 생성된 이미지 확인
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
4. 사용방법 (9/9)- Container 생성$ docker-compose up -d
- Container 삭제$ docker-compose down
- Container 시작$ docker-compose start
- Container 종료$ docker-compose stop