여니의 프로그래밍 study/도커, 쿠버네티스

[2장-4] 도커 엔진

여니's 2024. 3. 13. 22:30

참고서적 : 시작하세요! 도커/쿠버네티스


 

(9.2) 컨테이너 CPU 제한

- cpu-shares

: 컨테이너에 가중치를 설정해서 해당 컨테이너가

CPU를 상대적으로 얼마나 사용할 수 있는지를 나타낸다.

 

시스템에 존재하는 CPU를 어느 비중으로 나눠 쓸 지 명시하는 옵션

 

docker run -d --name cpu_1024

--cpu-shares 1024

alicek106/stress

stress --cpu 1

 

-> 1024의 값을 할당하였고

1개의 프로세스로 cpu에 부하를 주는 명령어(stress --cpu 1)로 설정됨

 

이 상태에서 --cpu-shares의 값이 512로 설정된 컨테이너가

같이 실행된다면,

2:1의 비율로 CPU를 나눠쓰는 걸 확인할 수 있다.

 

1024:512=2:1의 비율로

시스템의 CPU를 사용하고 있고

--cpu-shares에 설정된 값의 비율에 따라

컨테이너가 CPU를 사용할 수 있는 비율이 정해진다.

 

 

stress의 명령어는

CPU와 메모리에 과부하를 줘서 성능을 테스트한다.

 


 

-cpuset-cpus

: 호스트에 CPU가 여러개 있을 때, 해당 옵션을 지정하여

컨테이너가 특정 CPU만 사용하도록 설정함

 

CPU 집중적인 작업이 필요하다면

여러 개의 CPU를 사용하도록 설정해서

작업을 적절하게 분배하는 것이 좋음

 

docker run -d --name cpuset_2

--cpuset-cpus=2

alicek106/stress

stress --cpu 1

 

1,4번째 CPU는 --cpuset-cpus="0,3"

 


--cpu-period, --cpu-quota

 

컨테이너의 CFS 주기는 

기본적으로 100ms로 설정되지만,

해당 옵션을 통해 주기를 변경할 수 있다. 

 

--cpu-quota 는

--cpu-period에 설정된 시간 중 cpu 스케줄링에

얼마나 할당할 것인지를 설정하는 옵션임

 

 

--cpu-quato값 / --cpu-period 값만큼

CPU 시간을 할당받음

 


 

--cpus

: --cpu-period, --cpu-quota와 동일한 기능을 하지만

좀 더 직관적으로 CPU의 개수를

직접 지정한다는 점에서 다르다.

 

--cpus 옵션에 0.5를 설정하면

--cpu-period=100000 또는

--puc-quoat=50000과 

동일하게 컨테이너의 CPU를 제한할 수 있음

 


 

(9.3) Block I/O 제한

컨테이너 생성 시 아무런 옵션이 설정되어 있지 않으면

컨테이너 내부에서 파일을 읽고 쓰는 대역폭에

제한이 설정되지 않는다.

 


(9.4) 스토리지 드라이버와 컨테이너 저장 공간 제한

: 도커 엔진은 컨테이너 내부의 저장 공간을 제한하는 기능을

보편적으로 제공하진 않지만,

도커의 스토리지 드라이버나 파일 시스템 등이

특정 조건을 만족하는 경우에만

이 기능을 제한적으로 사용할 수 있음

 


(10) 도커 이미지

: 도커 허브라는 중앙 이미지 저장소에서 이미지를 내려받는다.

도커 허브에 어떤 이미지가 있는지 확인하기 위해

허브 사이트에서도 확인할 수 있고,

docker search라는 명령어를 사용할 수도 있음

 

docker search ubuntu

 


(10.1) 도커 이미지 생성

: 도커로 개발하는 많은 경우에는

컨테이너에 애플리케이션을 위한 특정 개발 환경을

직접 구축한 뒤

사용자만의 이미지를 직접 생성해야 할 것임

이를 위해 컨테이너 안에서 작업한 내용을

이미지로 만드는 방법은 아래와 같음

 

docker run -i -t --name commit_test ubuntu:14.04

 

> 이미지로 만들 컨테이너 생성

 

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

 

> docker commit 명령어를 이용하여

컨테이너를 이미지로 만든다

 

docker commit

-a "alicek106" -m "my first commit"

commit_test

commit_test:first

> commit_test라는 컨테이너를

commit_test:first라는 이름의 이미지로 생성

 

위 명령어에서는 

이미지의 이름이 commit_test

태그는 first

 

이때,이미지의 태그를 입력하지 않으면

자동으로 latest로 설정된다

 

-a 옵션 : 이미지의 작성자를 나타내는 메타데이터를

이미지에 포함시킨다.

 

이미지의 작성자 데이터는 "alicek106"으로 설정된다

 

-m 옵션은 커밋 메세지를 뜻함

 

최상위 디렉터리에 first라는 파일이 있는 도커이미지가 생성된다

 

이미지 생성여부 확인은

docker images로 확인

 

commit_test:first 이미지로 새로운 이미지 생성하기

> commit_test:first 이미지로 컨테이너 생성 후,

second라는 파일을 추가해 commit_test:second라는

이미지를 새롭게 생성함

 

docker run -i -t --name commit_test2 commit_test2:first

 

docker commit 

-a "alicek106" -m "my second commit"

commit_test2

commit_test:second

 

 

'여니의 프로그래밍 study > 도커, 쿠버네티스' 카테고리의 다른 글

[2장-3] 도커 엔진  (0) 2024.03.03
[2장-1] 도커 엔진  (0) 2024.02.04
[1장] 도커란?  (1) 2024.01.21