docker
docker
docker container란?
Simply put, a container is simply another process on your machine that has been isolated from all other processes on the host machine.
That isolation leverages kernel namespaces and cgroups, features that have been in Linux for a long time.
Docker has worked to make these capabilities approachable and easy to use.
docker 장점?
1. Host와 독립된 환경에 설치되므로 Host가 지저분해지지 않고 충돌도 방지할 수 있으며 컨테이너 실행, 중지도 간단해서 제어하기 편함.
2. 가상머신 대비, 게스트 OS를 띄우는 오버헤드를 없앨 수 있다.
docker는 host kernel을 사용하기 때문에 따로 게스트 OS를 띄우는 오버헤드가 없다.
* 그러나 docker는 Linux 기반 container라서, Windows나 MacOS에서는 linux 가상머신이 따로 실행되고 그 위에서 컨테이너가 실행된다. docker for windows가 이런 방식. 이렇게 되면 그냥 가상머신 위에 올리는거랑 성능 면에서는 별 차이 없을 수 있는데 포트포워딩이나 공유 폴더같은 편의성에서 도커가 좀 더 낫다.
* 요즘 Windows는 WSL 지원해서 좀 낫긴 하다.
3. 잘 추상화된 컨테이너 이미지가 많다.
4. provisioning이 가상머신에 비해 용이하다.
docker-compose
docker-compose란?
1. 개발환경 세팅 시 Host에 잡다한거 설치 안하고 docker-compose 한방으로 끝낼 수 있다.
2. 여러 도커 컨테이너를 docker-compose 로 한방에 제어 가능하다
컨테이너 오케스트레이션 with Kubernetes
- Scheduling
- 여러 호스트에 알맞게 컨테이너 분배 (Scaling)
- 컨테이너나 호스트 장애 시 재분배
- Networking
- 여러 호스트에 분산된 컨테이너 간의 네트워킹 지원
- Logging
- Monitoring
- Storage
- 여러 호스트를 이동하며 운영되는 컨테이너가 접근할 '리모트' 스토리지 제공
* 쿠버네티스의 가장 중요한 장점 중 하나는 Auto Scaling
- 자동으로 Scale-IN, Scale-OUT 이 가능하기 때문에 트래픽이 적은 평소에는 비용을 덜 쓰고, 트래픽이 몰릴 때만 인스턴스를 확 늘려서 유연하게 대응할 수 있다.
- 이런 식으로 워크로드를 관리할 때 docker 이미지를 사용하는게 편함.
pod란?
- 쿠버네티스는 여러 컨테이너를 pod라는 단위로 묶어서 배포한다.
- `` pod web = (nginx container + tomcat container)``
- 한 pod 내의 컨테이너들은 네트워크와 로컬 디스크 볼륨을 공유한다 (컨테이너 스토리지가 아니라 로컬 디스크 볼륨)
사용법
실행한 도커 컨테이너에 배쉬쉘로 접근하기
```bash
docker exec -it mysql1 bash
```
- 명령어나 기초 가이드는 역시 공식 홈페이지! https://docs.docker.com/docker-for-mac/
- https://subicura.com/2017/01/19/docker-guide-for-beginners-1.
- http://raccoonyy.github.io/docker-usages-for-dev-environment-setup/
Bind Mount를 사용하면 Host directory를 docker 안쪽으로 mount 시킬 수 있음.
docker-compose.yml의 mount, volume 예제
```yml
volumes:
- type: bind
source: ./elasticsearch/config/elasticsearch.yml
target: /usr/share/elasticsearch/config/elasticsearch.yml
read_only: true
- type: volume
source: elasticsearch
target: /usr/share/elasticsearch/data
```
자동으로 재시작하기
// docker 인 경우
docker run --restart always
// docker-compose.yml 인 경우
restart: always
참고 링크
kubernetes.io/ko/docs/tutorials/kubernetes-basics/
helm.sh/docs/intro/quickstart/
Private Docker Registry를 구축하기 위한 오픈소스 Harbor 도입기
'DevOps & Server' 카테고리의 다른 글
[CI/CD] 젠킨스 Jenkins (0) | 2019.05.09 |
---|---|
vagrant (0) | 2018.11.02 |
ansible 앤서블 설명 (0) | 2018.10.30 |
docker (0) | 2018.10.27 |
웹서버 / WAS 정리 (0) | 2017.06.17 |
AWS, Google Cloud, Azure (0) | 2017.04.22 |
댓글
이 글 공유하기
다른 글
-
vagrant
vagrant
2018.11.02 -
ansible 앤서블 설명
ansible 앤서블 설명
2018.10.30 -
웹서버 / WAS 정리
웹서버 / WAS 정리
2017.06.17 -
AWS, Google Cloud, Azure
AWS, Google Cloud, Azure
2017.04.22