Docker?
dotCloud가 자사의 PaaS를 제공하는 내부관리 소프트웨어로
2013년 3월 오픈소스로 공개. 몇개월만에 업계 표준으로 떠오름.
dotCloud는 2013년 10월에 아예 상호명을 Docker Inc로 바꾸고 도커관리를 하는 회사가 됨.
현재 linux foundation 재단의 후원을 받고 있음
레드햇7 표준 탑재 , AWS, Google Cloud , MS Azure등의 클라우드 서비스에서 공식 지원
도커가 나온 배경
가상화 - 예전에는 하나의 물리적인 서버가 하나의 일만 처리하였는데
시간이 흘러감에 따라 서버 성능이 좋아지면서 서버가 많이 놀더라.
그래서 서버프로그램 자체를 가상의 서버에다 올리자는 취지
기존 하이퍼바이저
장점 - 리소스 공유 , 관리가 편하다.
단점 - 느리다.
구동은 가상머신으로 돌아가지만 가상머신자체가 컴퓨터다 보니
os설치등 세팅도 다 해줘야한다.
어쨋든 가상화다 뭐다해도 실제 서버보다 느리다 보니
리눅스 커널에서 컨테이너 (cgroups , namespaces)라는 기술을 발표
결국 도커는 가상화기술이 아니라 리눅스커널에서 제공하는 컨테이너기술을 이용한 컨테이너 시스템
리눅스 커널 자체에서 돌아가기 때문에 실제 성능과 별 차이가 없다.
Docker의 특징
hostos의 커널영역을 별다른 hypervisor를 거치지 않고 공유하여 사용
container 영역에는 각 모듈별로 프로그램만 동작됨
도커는 vmware처럼 이미지를 통째로 관리하지 않는다,
- maven이나 git등 타 형상관리 툴처럼 조각으로 관리,
- 베이스 이미지와 변화된 이미지를 합쳐서 컨테이너를 생성한다.
용어
image
- 실제 실행 환경의 이미지 파일 snapshot의 느낌
이미지 생성방법
- 저장소에서 이미지를 다운
- DockerFile 스크립트를 이용한 이미지 생성
- 컨테이너에서 설정을 변경하고 이미지 생성
- custom이미지 생성 ( os바이너리 소스로 생성, 빈이미지 )
container
- 실제 메모리공간에 올라간 인스턴스 모듈, image하나로 여러개의 container를 만들수 있음
docker hub, docker registry - 이미지관리 pull / push 명령어 이용
docker 따라하기
우분투 상에서 설치는 apt-get으로 걍 하면 됨
docker run -d -i -t --name="test-nginx" -p 80:80 nginx
docker run -d -i -t --name="test-apache" -p 80:80 apache
docker run -d -i -t --name="test-tomcat" -p 8080:8080 -v /Users/jackdaw/develop/test.war:/usr/local/tomcat/webapps/test.war tomcat
옵션 설명
run = create + start
-d 데몬으로 실행해라
--name 컨테이너 이름
-p 포트포워딩
-v 내 로컬 파일을 컨테이너로 복사 :으로 구분 , 추가 파일 복사라면 docker cp를 이용
원래대로라면 저장소에서 pull을 받아서 이미지를 가지고 있어야 하지만
똑똑하게도 run을 하면 지가 알아서 저장소에서 내려받는다
docker ps
현재 컨테이너의 목록을 볼수 있다.
-a 전체 컨테이너의 목록을 볼수 있다.
docker start , stop , restart
docker exec -it test-tomcat /bin/bash
- 컨테이너 내부의 명령어 실행
docker inspect test-tomcat
- 컨테이너의 내부 세팅정보
docker rm
- 컨테이너 삭제
docker rmi
- 이미지 삭제
dockerfile?
이미지를 생성하는 스크립트 파일 docker build명령어로 생성할수 있다
nginx dockerfile
dockerfile 스크립트 명령어
- from : 어떤이미지를 베이스로 하는지 선택
- maintainer - 설명
- workdir - 작업 디렉토리 설정
- run : 이미지 구성 설정 쉘스크립트 , vm에서 실제 수행하는 스크립트
- cmd : 컨테이너가 시작될때 실행될 명령어
- expose : 포트
빌드 - 도커파일을 수행해서 이미지를 만든다
docker build -t huidragon/test [docker파일 폴더]
UI-Manager
키네마틱 - mac , windows docker gui tool 아직 베타 , 편하지만 디테일한 설정은 아직 안됨
docker-io - docker를 이용한 도커관리 웹ui 개새끼들
docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker
docker-hub
깃허브처럼 개인 저장소로 사용가능
푸쉬할 테스트 이미지를 만들기
sudo docker commit -m "test commit" -a "huidragon" test huidragon/test:v1
test컨테이너에서 huidragon/test라는 이름으로 이미지를 덤프뜨고 v1이라고 태그를 줌
푸쉬
sudo docker push huidragon/test
repository가 걍 만들어짐