본문 바로가기
Cloud/Docker

도커 데몬

by 민휘 2023. 4. 22.

목차

1. 도커의 구조

2. 도커 데몬 실행

3. 원격 도커 데몬 설정

4. 도커 데몬 보안 적용

5. 파이썬 라이브러리로 도커 엔진 제어하기

6. 스토리지 드라이버와 컨테이너 저장 공간

7. 도커 데몬 모니터링

 

 

도커의 구조

도커는 서버 클라이언트 구조를 가진다. 리소스 서버로 레지스트리를 사용한다.

  • 서버 : 컨테이너 생성, 실행, 이미지 관리. 프로세스로 동작하고, 이 프로세스가 도커 데몬.
  • 클라이언트 : 도커 데몬의 API를 사용할 수 있는 CLI 제공
  • 레지스트리 : 이미지의 저장소. 도커 허브, 사설 레지스트리 컨테이너 등

 

도커 데몬 실행

도커 데몬을 실행한다는 것은 도커 서버 프로세스를 시작하는 것이다.

운영체제의 서비스가 도커 데몬의 실행주체이며, dockerd 명령어로 도커 데몬을 실행한다. 보통 도커를 설치하면 자동으로 데몬이 실행된다.

 

원격 도커 데몬 설정

-h 옵션에 ip 주소와 포트 번호를 입력하면 원격 api인 docker remote api로 도커를 제어할 수 있다.

remote api는 restful api 형식을 띠고 있어 HTTP 요청으로 도커를 제어할 수 있다.

다음과 같이 IP 주소와 포트를 지정해 도커 데몬을 제어하고 도커 클라이언트를 사용한다.

docker -h unix:///var/run/docker.sock -H tcp://192.168.99.199:2375

Remote API는 사용 방법이 도커 명령어와 조금씩 다르므로 HTTP 도구로 직접 요청을 전송하기보다는 특정 언어로 바인딩된 라이브러리를 사용하는 것이 일반적이다.

 

도커 데몬 보안 적용

실제 운영 환경에서 도커를 사용해야한다면 별도의 보안을 적용해야한다.

기본적으로 보안 설정이 되어있지 않고, Remote API를 허용했다면 바인딩된 IP 주소와 포트번호만으로 도커를 제어할 수 있다.

도커 데몬에 TLS 보안을 적용하고, 도커 클라이언트와 Remote API 클라이언트가 인증되지 않으면 도커 데몬을 제어할 수 없도록 설정한다.

 

파이썬 라이브러리로 도커 엔진 제어하기

도커를 원격으로 제어할 때, 수행해야하는 작업이 복잡하다면 도커를 제어하는 라이브러리를 사용하는 것이 좋다.

  1. 파이썬 설치
  2. pip로 도커 라이브러리 설치
  3. 파이썬 코드로 도커 클라이언트 객체 생성, base_url 필요
  4. 컨테이너가 수행해야하는 작업 작성
import docker

client = docker.DockerClient(base_url = 'unix://var/run.docker.sock')
container = client.containers.run('nginx', detach=True,ports={'80/tcp':80})

print("Created Container is : {}, {}".format(container.name, container.id))

 

 

스토리지 드라이버와 컨테이너 저장 공간

스토리지 드라이버의 역할

컨테이너 내부에서 쓰기 작업이 일어나면, 변경 사항에 대해서만 레이어를 만들어 이미지에 추가한다. 그러려면 읽기만 가능한 이미지 레이어 위에 쓰기가 가능한 컨테이너 레이어에 데이터를 생성 해야하는데, 스토리지 드라이버가 레이어의 상호 작용 방식을 처리한다. 여러 스토리지 드라이버가 존재하는데, 최신 버전의 도커는 OverlayFS를 사용한다. 사용자가 다른 스토리지 드라이버를 선택할 수 있다.

 

스토리지 드라이버 종류

  • AUFS : 컨테이너 관련 수행 작업이 매우 빨라 가장 많이 사용, PaaS 환경에 적합
  • DeviceMapper : AUFS와 달리 전체 파일을 복사하지 않지만 작업은 느림
  • OverlayFS : AUFS와 비슷한 원리지만 더 간단한 구조
  • Btrfs : SSD 최적화, 우수한 성능, 리눅스 파일시스템이 제공하지 않는 기능
  • XFS : 성능과 안정성, 하지만 가볍지 않음

 

컨테이너 저장 공간

컨테이너 내부에서 사용되는 파일시스템의 크기는 도커가 사용하고 있는 스토리지 드라이버에 따라 조금씩 다르다.

스토리지 드라이버에 상관없이 컨테이너의 저장공간을 제한하는 기능은 없고

스토리지 드라이버별로 저장 공간을 제한할 수 있다.

 

도커 데몬 모니터링

 

도커 데몬 모니터링 목적

  • 많은 수의 도커 서버를 효율적으로 관리
  • 도커로 컨테이너 애플리케이션을 개발하다가 문제가 생겼을 때 원인 찾아내기
  • 도커를 PaaS로써 제공하기 위해 실시간으로 도커 데몬의 상태를 체크

 

도커 데몬 모니터링 방법

  • 도커 데몬 디버그 모드 : 너무 많은 정보 출력, 포그라운드
  • events : 실시간 스트림 로그, filter 사용 가능
  • stats : 실행 중인 모든 컨테이너의 자원 사용량을 스트림으로 출력
  • system df : 이미지, 컨테이너, 로컬 볼륨 개수 및 확보 가능 공간
  • CAdvisor : 컨테이너별 실시간 자원 사용량 및 도커 모니터링 정보 시각화

'Cloud > Docker' 카테고리의 다른 글

도커 컴포즈  (0) 2023.04.22
도커 스웜  (0) 2023.04.22
Dockerfile  (1) 2023.04.22
도커 이미지  (0) 2023.04.22
컨테이너 로깅, 컨테이너 자원 할당 제한  (0) 2023.04.22