SlideShare a Scribd company logo
1 of 17
DOCKER 교육
2017.05.29
SDP 오 대리 <jyoh@i-
on.net>
교육의 목적
- docker 개념잡기
- Image 와 Container 개념잡기
- 자주 쓰는 실무 명령어 친해지기
- docker 데몬 설정 변경하기
- Dockerfile 로 이미지 자동화하기
- docker 빌드 배포의 장점 이해하
기
- 적용점 생각해보기
Docker 란?
호스
트
각 개별 시스
템
공식 :
- 기존의 리눅스 가상머신보다
경량화
- 빠르고 가벼워
체험 :
- 잘못되도 호스트에 영향이 없
어 마음이 가벼움
- 서비스의 추가 / 제거가 용이
서버
사내서버 실황
docker 의 구조
LOCAL
docker hub
이미지 다운로
드
이미지 업로드
로컬에 저
장
이미지로부터
컨테이너 생성
컨테이너로부
터
이미지 업데이
트
[ 이미지 ]
- 변경 불가능(immutable)
- docker hub 로 업데이트 가
능
[ 컨테이너 ]
- 변경 가능(mutable)
- docker hub 로 업데이트 불가
능
- 이미지로 저장되지 않는 한 정
보가 보존되지 않음
docker 의 명령어 친해지기
1 : 다운로드에서 작업까지
docker pull centos:latest
- docker hub 로부터 이
미지를 내려받기
- <이미지명>:<태그
명>
docker run -d --name=test centos:latest
- 다운받은 이미지로부터 컨테이너 생
성하기
- -d 혹은 --detach : 데몬모드로 실행. -d
누락 시. 컨테이너의 상태가 Exited 로
전환됨
- --name : 생성한 컨테이너에 이름을
부여. 누락시 난수화된 컨테이너 ID로
작업을 해야하니 꼭 부여하기
docker exec -it test /bin/bash
- 만들어진 컨테이너에 접속
하기
- -i : interactive
- -t : tty 모드
- 제일 끝에는 명령어
docker 의 명령어 친해지기
2 : 작업 후 업로드
docker commit test testimg
- 컨테이너를 이미지로 커밋하는
작업
- 첫번째 인자는 컨테이너명
- 두번째 인자는 새로 등록할 이미
지명
1. docker tag testimg juneyoungoh/education:test
- 새로 등록할 이미지에 tag 를 부여하기
- 두번째 리파지토리명 인자는 반드시 <도커허브 유저
ID>/<리파지토리명>:<태그명> 일 것
- 하기 전에 docker login 하기
2. docker push juneyoungoh/education:test
- 새로 변경된 로컬 이미지를 허브에 등록하는 작업
- 인자는 1 번에서 두번째 인자와 동일
docker 의 명령어 친해지기
3 : 작업과 디버깅 1
[ 이미지와 컨테이너 ]
현재 로컬에 내려받아진 이미지 목록 조회하기 : docker images
현재 로컬에서 사용하는 컨테이너 목록 조회하기 : docker ps
호스트에서 컨테이너로 파일 전송하기 : docker cp <호스트 파일> <컨테이너ID>:<컨테이너 경로>
구동 중인 컨테이너 구동/멈추기 : docker start/stop <컨테이너ID>
컨테이너 삭제하기 : docker rm <컨테이너ID>
사용하지 않는 이미지 삭제 하기 : docker rmi <이미지 ID>
docker 의 명령어 친해지기
3 : 작업과 디버깅 2
[ 디버깅 ]
Case1. run 명령으로 컨테이너를 구동 후, ps 를 했는데 뜨자마자 Exited 로 상태가 표시
- docker logs <컨테이너 ID> : 컨테이너의 로그를 확인
Case2. docker 데몬이 <defunc> 상태에 돌입
- 노답. 장비 리부팅. docker 데몬은 부모의 pid 가 1 이기 때문에 <defunc> 상태로 빠지게 되면 장비 리
부팅 뿐이 답이 없음
docker 데몬 설정 변경하기
Case A.
열심히 작업하고 있는데 새로운 container 가 뜨지 않아 프로세스를 확인하니, 데몬이 <defunc> 상태로 빠짐.
이 부장님 왈, “/var/lib 은 용량이 적어서 docker 데이터 파일을 /data 로 옮겨야 됨”.
- 기본으로 잡히는 설정을 변경하려면 daemon.json 을 만들어줘야 함.(있으면 쓰면 됨)
- centos 에서는 /etc/docker 에 만들어 줘야 하는데 파일이 없으면 생성하면 됨
- daemon.json 작성법 공식 가이드
Case 2. 리눅스 default 를 붙여넣었는데 아예 뜨지도 않음
- stackoverflow 에서 알려줌
- 쓸 거 빼고는 json 에서 모두 제거해야 함.
docker 데몬 설정 변경하
기 :OSX
1. Preferences 누르기
2. Advanced 탭에서 json 작성
고오급 기술 : Dockerfile
docker build -t test .
- -t 다음에는 사용할 태그명을 넣으시오.
- . 대신에 Dockerfile 이 있는 경로를 넣음
됨
Dockerfile ?
- 기본적으로 쉘스크립트
- 이미지가 구동될 때 할 행동을 미리 정의할
수 있음
- 가령, 내가 test 이미지를 run 하면 자동으로
jdk 랑 톰캣을 깔아서 웹서버를 띄워줘
Dockerfile 활용하기
[ Dockerfile 키워드 ]
- FROM : 모든 도커파일을 FROM 으로 시작함. FROM 뒤에는 배경이 될 이미지가 명시. ex> FROM
centos
- ARG : docker build 명령시 --build-arg <ARG명>=<사용할 값> 으로 받을 수 있는 파라미터
- ENV : 생성된 docker image 내에서 사용할 환경 변수, 가령 JAVA_HOME 이라던가
CATALINA_HOME 이라던가…
- RUN : 이미지 내에서 실행될 명령
- EXPOSE : 도커 컨테이너에서 호스트로 개방될 포트를 명시
- VOLUME : 도커 컨테이너에서 호스트와 공유할 볼륨을 명시
- CMD : docker run 에 매핑되는 명령어 ● Dockerfile 예시는 참고자료 항목 참조
Dockerfile 활용하기
[ Dockerfile 디버깅 ]
CASE A.
갑돌이는 아래와 같이 Dockerfile 을 작성하였다. docker build 로 성공적으로 이미지를 생성하고 docker run
을 하였다. 당연히 상태가 Up 일 줄 알았지만 Exited 로 표기 되며 정상 구동이 되지 않는다.
StackOverflow 에 물어보기
docker 사용해보니 ...
장점
- 망쳐도 컨테이너 안에서 망침. 마음이 가볍다
- 한번 Dockerfile 만들면 배포하기 쉬움
- 레이어로 관리되서 업데이트가 빠르고 가벼움
- 신기하고 재미지다(?)
단점
- 설정하는 사람은 시스템을 다 알아야 함 (뭐는 루비고, 뭐는 파이썬이고)
- 한글 레퍼런스가 부족함
- <defunc> 문제는 노답
부록. Docker hub 사용하기
How to use
1. 도커허브 로그인
2. Create Repository +
3. 로컬에서 docker tag
4. 로컬에서 docker push
Question. 다른 repository 보
니까 Dockerfile 도 tab 으로
제공되던데…
1. 유료플랜에서 제공
2. 대부분 무료플랜은
github에 dockerfile 을
연동하는 방식으로 극
복● 무료 플랜 Dockerfile github 연동은 여기처럼 하
면 됨
참고 자료
- docker 공식 가이드 : 영어만 되면 제일 확실함
- pyrasis - 도커 무작정 따라하기 : 강추! 완전 이 PPT 를 보고나면 책을 살 필요성을 못느끼게 됨
- 교육에 사용되는 DockerHub
- 교육에 사용된 GitHub

More Related Content

What's hot

Introduce Docker
Introduce DockerIntroduce Docker
Introduce DockerYongbok Kim
 
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...Edureka!
 
Docker introduction for the beginners
Docker introduction for the beginnersDocker introduction for the beginners
Docker introduction for the beginnersJuneyoung Oh
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker IntroductionPeng Xiao
 
Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...
Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...
Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...Edureka!
 
Docker introduction
Docker introductionDocker introduction
Docker introductionPhuc Nguyen
 
Docker Birthday #3 - Intro to Docker Slides
Docker Birthday #3 - Intro to Docker SlidesDocker Birthday #3 - Intro to Docker Slides
Docker Birthday #3 - Intro to Docker SlidesDocker, Inc.
 
Docker swarm introduction
Docker swarm introductionDocker swarm introduction
Docker swarm introductionEvan Lin
 
Docker introduction (1)
Docker introduction (1)Docker introduction (1)
Docker introduction (1)Gourav Varma
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with DockerRavindu Fernando
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker, Inc.
 
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...Simplilearn
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to DockerAditya Konarde
 
Docker multi-stage build
Docker multi-stage buildDocker multi-stage build
Docker multi-stage buildAlexei Ledenev
 
Docker: From Zero to Hero
Docker: From Zero to HeroDocker: From Zero to Hero
Docker: From Zero to Herofazalraja
 
Docker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutesDocker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutesLuciano Fiandesio
 
Introduction to Docker storage, volume and image
Introduction to Docker storage, volume and imageIntroduction to Docker storage, volume and image
Introduction to Docker storage, volume and imageejlp12
 

What's hot (20)

Introduce Docker
Introduce DockerIntroduce Docker
Introduce Docker
 
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
 
Intro To Docker
Intro To DockerIntro To Docker
Intro To Docker
 
Docker introduction for the beginners
Docker introduction for the beginnersDocker introduction for the beginners
Docker introduction for the beginners
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...
Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...
Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...
 
A Hands-on Introduction to Docker
A Hands-on Introduction to DockerA Hands-on Introduction to Docker
A Hands-on Introduction to Docker
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Docker Birthday #3 - Intro to Docker Slides
Docker Birthday #3 - Intro to Docker SlidesDocker Birthday #3 - Intro to Docker Slides
Docker Birthday #3 - Intro to Docker Slides
 
Docker swarm introduction
Docker swarm introductionDocker swarm introduction
Docker swarm introduction
 
Docker introduction (1)
Docker introduction (1)Docker introduction (1)
Docker introduction (1)
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with Docker
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0
 
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Docker multi-stage build
Docker multi-stage buildDocker multi-stage build
Docker multi-stage build
 
Introduction to container based virtualization with docker
Introduction to container based virtualization with dockerIntroduction to container based virtualization with docker
Introduction to container based virtualization with docker
 
Docker: From Zero to Hero
Docker: From Zero to HeroDocker: From Zero to Hero
Docker: From Zero to Hero
 
Docker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutesDocker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutes
 
Introduction to Docker storage, volume and image
Introduction to Docker storage, volume and imageIntroduction to Docker storage, volume and image
Introduction to Docker storage, volume and image
 

Similar to Docker 사내교육 자료

[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)Ildoo Kim
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편negabaro
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-Woong Choi
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTHosang Jeon
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_startSukjin Yun
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTLOGISPOT
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]David Lee
 
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)Ji-Woong Choi
 
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container DayAmazon Web Services Korea
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXpressEngine
 
Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2XpressEngine
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea CloudJude Kim
 
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)CONNECT FOUNDATION
 
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08Nomad Connection, Inc.
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기iFunFactory Inc.
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Steve Shim
 
Jupyter notebok tensorboard 실행하기_20160706
Jupyter notebok tensorboard 실행하기_20160706Jupyter notebok tensorboard 실행하기_20160706
Jupyter notebok tensorboard 실행하기_20160706Yong Joon Moon
 

Similar to Docker 사내교육 자료 (20)

[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOT
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_start
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOT
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
 
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
 
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2
 
Docker
DockerDocker
Docker
 
Docker osc 0508
Docker osc 0508Docker osc 0508
Docker osc 0508
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
 
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
 
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1
 
Jupyter notebok tensorboard 실행하기_20160706
Jupyter notebok tensorboard 실행하기_20160706Jupyter notebok tensorboard 실행하기_20160706
Jupyter notebok tensorboard 실행하기_20160706
 
Docker Container
Docker ContainerDocker Container
Docker Container
 

More from Juneyoung Oh

휴봇-슬랙 OSX 설치
휴봇-슬랙 OSX 설치휴봇-슬랙 OSX 설치
휴봇-슬랙 OSX 설치Juneyoung Oh
 
How to build a slack-hubot with js
How to build a slack-hubot with jsHow to build a slack-hubot with js
How to build a slack-hubot with jsJuneyoung Oh
 
Github 의 release 기능
Github 의 release 기능Github 의 release 기능
Github 의 release 기능Juneyoung Oh
 
Html5 canvas6 week6n7n8
Html5 canvas6 week6n7n8Html5 canvas6 week6n7n8
Html5 canvas6 week6n7n8Juneyoung Oh
 
Html5 canvas study week1n2
Html5 canvas study week1n2Html5 canvas study week1n2
Html5 canvas study week1n2Juneyoung Oh
 
Tizen installation guide for OSX
Tizen installation guide for OSXTizen installation guide for OSX
Tizen installation guide for OSXJuneyoung Oh
 

More from Juneyoung Oh (6)

휴봇-슬랙 OSX 설치
휴봇-슬랙 OSX 설치휴봇-슬랙 OSX 설치
휴봇-슬랙 OSX 설치
 
How to build a slack-hubot with js
How to build a slack-hubot with jsHow to build a slack-hubot with js
How to build a slack-hubot with js
 
Github 의 release 기능
Github 의 release 기능Github 의 release 기능
Github 의 release 기능
 
Html5 canvas6 week6n7n8
Html5 canvas6 week6n7n8Html5 canvas6 week6n7n8
Html5 canvas6 week6n7n8
 
Html5 canvas study week1n2
Html5 canvas study week1n2Html5 canvas study week1n2
Html5 canvas study week1n2
 
Tizen installation guide for OSX
Tizen installation guide for OSXTizen installation guide for OSX
Tizen installation guide for OSX
 

Docker 사내교육 자료

  • 1. DOCKER 교육 2017.05.29 SDP 오 대리 <jyoh@i- on.net>
  • 2. 교육의 목적 - docker 개념잡기 - Image 와 Container 개념잡기 - 자주 쓰는 실무 명령어 친해지기 - docker 데몬 설정 변경하기 - Dockerfile 로 이미지 자동화하기 - docker 빌드 배포의 장점 이해하 기 - 적용점 생각해보기
  • 3. Docker 란? 호스 트 각 개별 시스 템 공식 : - 기존의 리눅스 가상머신보다 경량화 - 빠르고 가벼워 체험 : - 잘못되도 호스트에 영향이 없 어 마음이 가벼움 - 서비스의 추가 / 제거가 용이
  • 5. docker 의 구조 LOCAL docker hub 이미지 다운로 드 이미지 업로드 로컬에 저 장 이미지로부터 컨테이너 생성 컨테이너로부 터 이미지 업데이 트 [ 이미지 ] - 변경 불가능(immutable) - docker hub 로 업데이트 가 능 [ 컨테이너 ] - 변경 가능(mutable) - docker hub 로 업데이트 불가 능 - 이미지로 저장되지 않는 한 정 보가 보존되지 않음
  • 6. docker 의 명령어 친해지기 1 : 다운로드에서 작업까지 docker pull centos:latest - docker hub 로부터 이 미지를 내려받기 - <이미지명>:<태그 명> docker run -d --name=test centos:latest - 다운받은 이미지로부터 컨테이너 생 성하기 - -d 혹은 --detach : 데몬모드로 실행. -d 누락 시. 컨테이너의 상태가 Exited 로 전환됨 - --name : 생성한 컨테이너에 이름을 부여. 누락시 난수화된 컨테이너 ID로 작업을 해야하니 꼭 부여하기 docker exec -it test /bin/bash - 만들어진 컨테이너에 접속 하기 - -i : interactive - -t : tty 모드 - 제일 끝에는 명령어
  • 7. docker 의 명령어 친해지기 2 : 작업 후 업로드 docker commit test testimg - 컨테이너를 이미지로 커밋하는 작업 - 첫번째 인자는 컨테이너명 - 두번째 인자는 새로 등록할 이미 지명 1. docker tag testimg juneyoungoh/education:test - 새로 등록할 이미지에 tag 를 부여하기 - 두번째 리파지토리명 인자는 반드시 <도커허브 유저 ID>/<리파지토리명>:<태그명> 일 것 - 하기 전에 docker login 하기 2. docker push juneyoungoh/education:test - 새로 변경된 로컬 이미지를 허브에 등록하는 작업 - 인자는 1 번에서 두번째 인자와 동일
  • 8. docker 의 명령어 친해지기 3 : 작업과 디버깅 1 [ 이미지와 컨테이너 ] 현재 로컬에 내려받아진 이미지 목록 조회하기 : docker images 현재 로컬에서 사용하는 컨테이너 목록 조회하기 : docker ps 호스트에서 컨테이너로 파일 전송하기 : docker cp <호스트 파일> <컨테이너ID>:<컨테이너 경로> 구동 중인 컨테이너 구동/멈추기 : docker start/stop <컨테이너ID> 컨테이너 삭제하기 : docker rm <컨테이너ID> 사용하지 않는 이미지 삭제 하기 : docker rmi <이미지 ID>
  • 9. docker 의 명령어 친해지기 3 : 작업과 디버깅 2 [ 디버깅 ] Case1. run 명령으로 컨테이너를 구동 후, ps 를 했는데 뜨자마자 Exited 로 상태가 표시 - docker logs <컨테이너 ID> : 컨테이너의 로그를 확인 Case2. docker 데몬이 <defunc> 상태에 돌입 - 노답. 장비 리부팅. docker 데몬은 부모의 pid 가 1 이기 때문에 <defunc> 상태로 빠지게 되면 장비 리 부팅 뿐이 답이 없음
  • 10. docker 데몬 설정 변경하기 Case A. 열심히 작업하고 있는데 새로운 container 가 뜨지 않아 프로세스를 확인하니, 데몬이 <defunc> 상태로 빠짐. 이 부장님 왈, “/var/lib 은 용량이 적어서 docker 데이터 파일을 /data 로 옮겨야 됨”. - 기본으로 잡히는 설정을 변경하려면 daemon.json 을 만들어줘야 함.(있으면 쓰면 됨) - centos 에서는 /etc/docker 에 만들어 줘야 하는데 파일이 없으면 생성하면 됨 - daemon.json 작성법 공식 가이드 Case 2. 리눅스 default 를 붙여넣었는데 아예 뜨지도 않음 - stackoverflow 에서 알려줌 - 쓸 거 빼고는 json 에서 모두 제거해야 함.
  • 11. docker 데몬 설정 변경하 기 :OSX 1. Preferences 누르기 2. Advanced 탭에서 json 작성
  • 12. 고오급 기술 : Dockerfile docker build -t test . - -t 다음에는 사용할 태그명을 넣으시오. - . 대신에 Dockerfile 이 있는 경로를 넣음 됨 Dockerfile ? - 기본적으로 쉘스크립트 - 이미지가 구동될 때 할 행동을 미리 정의할 수 있음 - 가령, 내가 test 이미지를 run 하면 자동으로 jdk 랑 톰캣을 깔아서 웹서버를 띄워줘
  • 13. Dockerfile 활용하기 [ Dockerfile 키워드 ] - FROM : 모든 도커파일을 FROM 으로 시작함. FROM 뒤에는 배경이 될 이미지가 명시. ex> FROM centos - ARG : docker build 명령시 --build-arg <ARG명>=<사용할 값> 으로 받을 수 있는 파라미터 - ENV : 생성된 docker image 내에서 사용할 환경 변수, 가령 JAVA_HOME 이라던가 CATALINA_HOME 이라던가… - RUN : 이미지 내에서 실행될 명령 - EXPOSE : 도커 컨테이너에서 호스트로 개방될 포트를 명시 - VOLUME : 도커 컨테이너에서 호스트와 공유할 볼륨을 명시 - CMD : docker run 에 매핑되는 명령어 ● Dockerfile 예시는 참고자료 항목 참조
  • 14. Dockerfile 활용하기 [ Dockerfile 디버깅 ] CASE A. 갑돌이는 아래와 같이 Dockerfile 을 작성하였다. docker build 로 성공적으로 이미지를 생성하고 docker run 을 하였다. 당연히 상태가 Up 일 줄 알았지만 Exited 로 표기 되며 정상 구동이 되지 않는다. StackOverflow 에 물어보기
  • 15. docker 사용해보니 ... 장점 - 망쳐도 컨테이너 안에서 망침. 마음이 가볍다 - 한번 Dockerfile 만들면 배포하기 쉬움 - 레이어로 관리되서 업데이트가 빠르고 가벼움 - 신기하고 재미지다(?) 단점 - 설정하는 사람은 시스템을 다 알아야 함 (뭐는 루비고, 뭐는 파이썬이고) - 한글 레퍼런스가 부족함 - <defunc> 문제는 노답
  • 16. 부록. Docker hub 사용하기 How to use 1. 도커허브 로그인 2. Create Repository + 3. 로컬에서 docker tag 4. 로컬에서 docker push Question. 다른 repository 보 니까 Dockerfile 도 tab 으로 제공되던데… 1. 유료플랜에서 제공 2. 대부분 무료플랜은 github에 dockerfile 을 연동하는 방식으로 극 복● 무료 플랜 Dockerfile github 연동은 여기처럼 하 면 됨
  • 17. 참고 자료 - docker 공식 가이드 : 영어만 되면 제일 확실함 - pyrasis - 도커 무작정 따라하기 : 강추! 완전 이 PPT 를 보고나면 책을 살 필요성을 못느끼게 됨 - 교육에 사용되는 DockerHub - 교육에 사용된 GitHub

Editor's Notes

  1. microse