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 로 한방에 제어 가능하다
사용법
실행한 도커 컨테이너에 배쉬쉘로 접근하기
```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
참고 링크
Private Docker Registry를 구축하기 위한 오픈소스 Harbor 도입기
windows에서 docker 쓸 때, volume 파일이 C:에 위치해서 용량 차지하는 문제 다른 드라이브로 이동하기 (sof)
'DevOps & Server' 카테고리의 다른 글
[CI/CD] 젠킨스 Jenkins (0) | 2019.05.09 |
---|---|
vagrant (0) | 2018.11.02 |
ansible 앤서블 설명 (0) | 2018.10.30 |
웹서버 / WAS 정리 (0) | 2017.06.17 |
AWS, Google Cloud, Oracle Cloud 비교 (0) | 2017.04.22 |