디지털 양피지/Docker2017. 6. 26. 15:24

1. Docker 설치


 - Linux, Window, Mac 3가지 플랫폼으로 가능하다. Windows 10 에서 Native로 Docker를 올릴 수 있다. 

 - 클라우드 환경마다 약간의 설치 방법이 틀리다.

 - Google Cloud는 기본적으로 깔려 있다.


 - Host에 Docker engine을 설치하면 daemon과 client가 설치된다.

 - docker cli를 통하여 daemon을 통해 수행한다.


* Docker 히스토리

- 2013년 시작하여 14년 Google, Amazon 등 참여

- 2014년 MS 도 참여 하겠다고 함. 2016년에 nano window 버전.

- 2014년에 Swarm 을 만들었다가 2015년에 다시 배포

- CoreOS와 Docker가 양분

- Plugins and Pluming : 주변 기술들을 다양하게 사용할 수 있다. 하나의 플랫폼화가 되어 가고 있다.





* App. 컨테이너와 OS 컨테이너

- OS Container

 . OS 처럼 여러 서비스를 실행

 . 기본적으로 레이어 파일 시스템을 사용하지 않음.

 . cgroup, namespace 기술 기반

 . LXC, 솔라리스 Zones 

- App. Container

 . 한 서비스를 실행

 . 레이어 파일 시스템을 사용

 . OS 컨테이너 기술을 기반

 . Docker, Rocket 



- Container 자체는 stateless 하다. 수정된 것을 반영을 하려면 Image를 만들어서 올려야 한다.

- Image는 read only 이며, 추가적으로 layer가 생성 되는 것이다.

- Layer를 통해 버전관리, 저장 공간을 줄인다.

 . 단점은 Layer를 지웠을 경우 Layer를 삭제하는 것이 아니라 기존 Layer가 삭제 됐다고 Layer를 더 올린다.

 . Layer의 한개가 있다(34?)

 . 위의 두가지 경우 Layer를 신규 Layer를 생성하여 Image size와 Layer를 줄여나가야 한다.

- docker history ubunt 와 같이 layer 히스토리를 볼 수 있다.


*  Docker vs. LXC

- 초기 Docker 버전

 . LXC API를 사용하는 LXC 를 기반 + 이동성(portability) 과 패키지 기능

- Docker 버전 0.9

  . LXC 의존성을 탈피하고 커널 인터페이스 API를 새로 작성 (libcontainer->runC)

- Docker 와 LXC 의 차이

 . 이동성과 쉬운 공유

 . App. 컨테이너 목적

 . 버전 제어 기능

 . 재사용성


* 주변 기술

Docker가 제공하는 지원 기술

 . Swarm: Docker의 클러스터 솔루션

 . 컴포즈: 여러 컨테이너로 구성된 애플리케이션 생성과 실행 도구

 . 머신: Docker 호스트 설치와 구성 도구

 . Docker Trusted Registry: Docker 이미지 저장과 관리에 대한 온프리마이스 도구

 . 네트워크: 여러 호스트간 컨테이너 통신을 지원

 . 서비스 디스커버리: 다른 서비스를 찾아주는 도구(etcd)

 . 오케스트레이션과 클러스터 관리: 시스템 모니터링과 관리 


* Docker 구성 요소

- Docker Hub

- Docker Image

- Docker Container

- Docker 명령어

- Dockerfile 


 - Docker 파일


- 외부의 기본 repository는 hub.docker.com 이다.

- private repository를 구성하여 만들 수 있다.


* Namespace 격리

 - User 

 - UTS

 - IPC

 - Mount(storage)

 - PID

 - Network


 -> Namespace는 SW 적으로 분리되는 것으로 해지 할 수도 있다.


 - Enterprise는 비용이 발생한다. 

 - 초기 설치시 Community 버전으로 설치하지 않으면 다시 설치해야 한다. 


 - 설치는 버전마다 틀리다.

 


- Docker를 설치하면 network 이 변경된다.

 . Docker bridge가 생성된다.


* 설치전

 - docker 명령은 root 권한이 있어야 한다.

 - root 권한을 줄 수 없으므로 docker group을 주어야 한다.


 + 아래 파일에 Docker 관련된 정보가 저장된다. 백업시 아래 폴더 저장


- 아래와 같이 bridge가 생기고 NAT와 같은 역활을 한다.



* 설치(https://docs.docker.com/engine/installation/linux/ubuntu/#install-using-the-repository)


#apt-get update


#apt-get install apt-transport-https ca-certificates curl software-properties-common


#curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -


#apt-key fingerprint 0EBFCD88


#add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \

   $(lsb_release -cs) stable"


#apt-get update


#apt-get install -y docker-ce 




- 설치가 완료되면 아래와 같이 버전을 확인 할 수 있다.


- 현재 docker images 하면 이미지가 없는 것을 확인 할 수 있다.

- docker run -it ubuntu /bin/bash 

 . ubuntu 이미지가 local에 없는 것을 확인하고 다운로드 받는다.

 . layer 된 5개를 다운 받아 실행한다.


- 이미지가 실행되고 /bin/bash로 떨어진다.

- 아래 보면 이미지 id로 돌고 있고, PID 1번으로 실행 된 모습을 볼 수 있다.

- 1번 이 종료되면 container는 종료 된다.


- busybox를 실행해 보자

- ip를 새로 받아서 실행 되는 것을 볼 수 있다.


- ubuntu를 올렸지만 119M 밖에 안된다. 

- kernel을 공유하고 있다.


- 우분투를 다시 돌려보고 ifconfig를 해보자.

- 실행되지 않는다. 이는 최소화된 경량화 이미지를 만들기 때문이다. 

- base로 지원되는 공식 이미지는 최소화 되어 있다.(apt 를 이용해 설치 가능)



* 설치 후 작업



'디지털 양피지 > Docker' 카테고리의 다른 글

2. Docker 레지스토리  (0) 2017.06.26
2. Docker 설치 후  (0) 2017.06.26
2. Docker 소개  (0) 2017.06.26
1.Linux for Docker - LVM(Logical Volume Management)  (0) 2017.06.23
1.Linux for Docker - SELinux  (0) 2017.06.23
Posted by 빨간 양말