일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 동시성
- Thread
- 전문가를 위한 파이썬
- AWS
- 플랫폼
- BlockChain
- Ethereum
- Algorithm
- guru
- Python
- fluent python
- rust
- 백준
- 코어 이더리움 프로그래밍
- 파이썬
- 러스트
- dockerfile
- 블록체인
- Container
- 알고리즘
- Network
- Kubernetes
- docker
- IMAGE
- RabbitMQ
- function
- Refactoring
- 이더리움
- Fast API
- BAEKJOON
Archives
- Today
- Total
글쓰기 | 방명록 | 관리 |
Victoree's Blog
[6] DockerDemon 본문
728x90
DockerDemon
도커 데몬 명령어
# service docker start
# service docker stop
- 우분투
- 도커 설치시 자동으로 서비스 등록됨
- 호스트가 재시작되더라도 자동 실행
- 레드햇 계열
- 자동 실행으로 설정되지는 않음
$ systemctl enable docker
수행 시, 자동으로 서비스 활성화됨
- 도커 서비스는
dockerd
로 데몬을 실행함- /usr/bin/dockerd에 명령어가 존재함
API listen on /var/run/docker.sock
- 소켓이 입력을 받을 수 있는 상태가 되었음을 뜻함
도커 데몬 설정
- 도커 데몬 제어 :
-H
- 기본 설정
- docker demon 실행 시
- 도커 클라이언트(/usr/bin/docker)를 위한 유닉스 소켓인 "/var/run/docker.sock"을 사용
-H
를 이용하여, IP 주소와 포트번호를 입력하면 원격 API인 Docker Remote API로 도커를 제어할 수 있음dockerd -H tcp://0.0.0.0:2375
설정 시- 유니스 소켓은 비활성화됨 -> 도커 클라이언트를 사용할 수 없음
- docker로 시작하는 명령어를 사용할 수 없음
- 일반적으로 도커 클라이언트를 위한 유닉스 소켓과 Remote API를 위한 바인딩 주소를 동시에 설정함
dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
- 도커 클라이언트가 도커 데몬에게 명령어를 수행하도록 요청할 때도 내부적으로는 같은 API를 사용 -> Remote API 또한 도커 클라이언트에서 사용 가능한 모든 명령어를 사용할 수 있음
- 도커 데몬과 특정 IP 바인딩 시
- 다른 호스트에서 매핑한 IP로 도커 명령을 쏴서 도커 데몬의 명령을 실행 시킬 수 있음
- 셸의 환경변수를 설정해 원격 도커를 제어할 수 있음
EXPORT DOCKER_HOST="tcp://192.168.99.100:2375"
- 도커 데몬 보안설정 :
--tlsverify
- remote api 사용 시, 보안이 적용되어 있지 않으면 바인딩된 IP주소와 포트만 알면 도커를 제어할 수 있음
- 책의 160쪽에 설명있으므로 정리는 생략
도커 스토리지 드라이버
도커 스토리지 드라이버 변경 : --storage-driver
- 도커는 스토리지 백엔드 기술을 이용하여 도커 컨테이너와 이미지를 저장하고 관리함
- 우분투
overlay2
- CentOS
deviceampper
- /var/lib/docker/(드라이버 이름)에 컨테이너와 이미지가 저장됨
- 여러개의 디바이스가 ㅎㅎㅎ하나의 디렉토리 안에 존재할 경우 위 옵션으로 명시하지 않으면 도커 데몬이 시작되지 않음(어떤 스토리지 디바이스를 사용해야하지 모르기 때문에)
스토리지 드라이버의 원리 : CoW V.S. RoW
- 읽기와 새로운 파일 쓰기 / 기존의 파일 쓰기 작업
- 스냅숏의 기본 개념
- 원본 파일은 읽기 전용으로 사용하되 파일 변경 시, 새로운 공간을 할당
- CoW
- 파일 쓰기 요청 시, 원본 파일을 읽은 후 스냅샷 공간으로 복사(쓰기 작업 1)
- 쓰기 요청 반영(쓰기 작업 2)
- 두번의 쓰기 작업으로 오버헤드 발생
- RoW
- 원본 스냅샷 프리즈로 원본 파일을 보호
- 변경 사항을 새로운 블록을 할당받아 변경점을 기록
1. AUFS
- 데비안 계열에서 기본적으로 사용할 수 있는 드라이버
- 안정성 측면에서 우수
- RHEL, CentOS 에서는 사용 불가능
- 파일 변경 시 CoW의 원리를 거침
- 컨테이너 실행/삭제 등의 컨테이너 관련 수행 작업이 매우 빠름
- 호스트의 저장 공간의 크기를 공유함
2. Devicemapper
- 래드헷 계열의 리눅스 배포판을 위해 개발된 스토리지 드라이버
- deprecated 됨
- 파일 변경 시 RoW의 원리를 거침
- 기본적으로 100GB 짜리 data 파일과 meta 데이터가 생성됨
- 100GB의 희소 파일에서 공간을 할당받아 이미지와 컨테이너 레이어 저장소로 사용
- 블록 단위로 공간을 할당받음
- 컨테이너와 이미지 블록 정보는 metadata 파일에 저장됨
- 기본적으로 10GB의 저장 공간을 할당함
- 옵션 추가를 통해 저장 공간 값을 수정할 수 있음
3. OverlayFS
- 레드헷 계열 및 라즈비안, 우분투 등 대부분의 운영체제에서 도커 설치 시 자동 설정되는 드라이버
- overlay2 > overlay
- 이미지 구성을 위해 여러 개의 레이어 구조를 지원함
- 계층화된 이미지 구조를 사용하지 않으며, lowerdir이라는 단일화된 이미지 레이어를 사용함
- 호스트의 저장 공간의 크기를 공유함
4. Btrfs
- 파일 시스템을 별도로 구성하지 않으면 도커에서 사용할 수 없음
- 블록 단위가 아닌 파일 단위로 각 레이어를 저장
- 스냅샷에 새로운 공간을 할당하는 RoW 방식을 사용함
5. ZFS
- allocate-on-demand 작업에 의해 zpool로부터 새로운 블록을 할당받고 쓰기작업을 수행함
- 압축과 데이터 중복 제거 등의 기능을 제공함
- 메모리를 많이 소모하는 파일 시스템이므로 호스트의 자원 사용량을 수시로 체크하는 것이 좋음
도커 데몬 모니터링
도커 데몬 디버그 모드
- 도커 데몬의 대부분의 일을 알아내기 위해선 데몬을 디버그 옵션으로 실행하는 것이 좋음
- 모든 명령어를 로그로 출력함
- 원하지 않는 정보도 출력됨 && 호스트의 파일을 읽거나 도커 데몬을 포그라운드 상태로 실행해야 한다는 단점이 있음
events, stats, system df 명령어
events
- 기본적으로 제공하는 명령어
- 도커 데몬에서 어떤일이 일어나는지 실시간 스트림 로그로 보여줌
$ docker evnets
||$ docker system events
- 모든 명령어가 출력되는 것은 아님
- attach, commit, copy, create : 컨테이너 관련 명령어
- delete, import, load, pull, push : 이미지 관련 명령어
- 볼륨, 네트워크, 플러그인 등의 수행 결과
- filter를 걸수도 있음
- container / image / volume / network / plugin / daemon 등
# docker evnets --filter 'type=image'
stats
- 실행중인 컨테이너의 자원 사용량을 스트림으로 출력
- CPU / 메모리 제한 및 사용량 / 네트워크 입출력 / 블록 입출력 정보를 출력함
--no-stream
으로 옵션을 줄 수도 있음
System df
- 사용하는 이미지, 컨테이너, 로컬 볼륨의 총 개수 및 사용중 개수, 크기, 삭제함으로 확보 가능한 공간을 출력함
CAdvisor
- 구글이 만든 모니터링 도구
- 컨테이너 별 실시간 자원 사용량 및 도커 모니터링 정보등을 시각화해서 보여줌
- 도커 데몬의 정보를 가져올 수 있는 호스트의 모든 디렉토리를 CAdvisor의 볼륨으로 마운트함
- 단일 도커 호스트만 모니터링 할 수있음
- 여러 도커 호스트 사용 혹은 PaaS같은 도커 클러스터를 구축했다면 쿠버네티스 혹은 스웜 모드 등의 오케스트레이션 툴을 설치 후 프로메테우스, InfluxDB 등을 통해 데이터를 수집하는 것이 일반적임
728x90
'Infra > Docker' 카테고리의 다른 글
[8] Docker Compose (0) | 2021.05.28 |
---|---|
[7] Docker Swarm (0) | 2021.05.28 |
[5] Dockerfile (0) | 2021.05.28 |
[4] Docker 이미지 (0) | 2021.04.26 |
[3] Docker Logging 및 자원 할당 (0) | 2021.04.26 |
Comments