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 |