728x90
< Docker :: 컨테이너CPU 자원 한계 설정>
<CPU 가중치 할당 (--cpu-shares)>
- 해당 컨테이너가 CPU를 상대적으로 얼마나 사용할 수 있는지 설정
- 시스템에 존재하는 CPU를 어느 비중만큼 나눠(share) 쓸 것인지를 명시
- 아무런 값을 할당하지 않았을 때 컨테이너가 가지는 값은 1024
<컨테이너 생성>
- --cpu-shares 1024: 컨테이너에 할당되는 CPU 리소스의 가중치를 1024로 설정
- --cpu-shares 512: 컨테이너에 할당되는 CPU 리소스의 가중치를 512로 설정
- stress --cpu 4: 컨테이너 내에서 실행되는 명령어로, CPU에 대한 스트레스를 발생시키는 도구인 "stress"를 사용하며, 이때 4개의 CPU 코어를 사용하도록 지정
- --cpu-shares 512: 컨테이너에 할당되는 CPU 리소스의 가중치를 512로 설정
ubuntu@host1:~/Labs/ch05$ docker container run -d --name cpu_1024 --cpu-shares 1024 leecloudo/stres
s:2.0 stress --cpu 4
Unable to find image 'leecloudo/stress:2.0' locally
2.0: Pulling from leecloudo/stress
f7277927d38a: Pull complete
8d3eac894db4: Pull complete
edf72af6d627: Pull complete
3e4f86211d23: Pull complete
d6e1f41c61e5: Pull complete
Digest: sha256:4da7b0ba1625592a3d34c3a6e112c4c70f43dd43086a226395e41a77b0537369
Status: Downloaded newer image for leecloudo/stress:2.0
2ee4c46f48e2d89662cdd6da0d26576dbfa29341b69c521302ca981afb661a3f
>> "cpu_1024"라는 이름의 Docker 컨테이너를 백그라운드에서 실행하며,
해당 컨테이너는 CPU 리소스의 가중치를 1024로 설정하고,
"leecloudo/stress:2.0" 이미지를 기반으로 하여
4개의 CPU 코어를 사용하여 CPU 스트레스를 발생
ubuntu@host1:~/Labs/ch05$ docker container run -d --name cpu_512 --cpu-shares 512 leecloudo/stress:
2.0 stress --cpu 4
7924050167ebb956fe557834f5586c1c0037160936221386bfd5e2fd58c4c66b
>> "cpu_512"라는 이름의 Docker 컨테이너를 백그라운드에서 실행하며,
해당 컨테이너는 CPU 리소스의 가중치를 512로 설정하고,
"leecloudo/stress:2.0" 이미지를 기반으로 하여
4개의 CPU 코어를 사용하여 CPU 스트레스를 발생
<컨테이너 생성 확인>
ubuntu@host1:~/Labs/ch05$ docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7924050167eb leecloudo/stress:2.0 "stress --cpu 4" 10 seconds ago Up 9 seconds cpu_512
2ee4c46f48e2 leecloudo/stress:2.0 "stress --cpu 4" 32 seconds ago Up 31 seconds cpu_1024
20fa045c6714 gcr.io/cadvisor/cadvisor:latest "/usr/bin/cadvisor -…" 14 minutes ago Up 14 minutes (healthy) 0.0.0.0:9559->8080/tcp, :::9559->8080/tcp cadvisor
3fbe576f54a8 haproxytech/haproxy-alpine:2.5 "/docker-entrypoint.…" 59 minutes ago Up 59 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:8404->8404/tcp, :::8404->8404/tcp haproxy-container
fc36f9434108 hashicorp/http-echo "/http-echo -text=ec…" About an hour ago Up About an hour 0.0.0.0:6004->5678/tcp, :::6004->5678/tcp echo-web4-basket
bd288a8230c1 hashicorp/http-echo "/http-echo -text=ec…" About an hour ago Up About an hour 0.0.0.0:6003->5678/tcp, :::6003->5678/tcp echo-web3-basket
e05672fcdf0d hashicorp/http-echo "/http-echo -text=ec…" About an hour ago Up About an hour 0.0.0.0:6002->5678/tcp, :::6002->5678/tcp echo-web2-item
598a7fd79944 hashicorp/http-echo "/http-echo -text=ec…" About an hour ago Up About an hour 0.0.0.0:6001->5678/tcp, :::6001->5678/tcp echo-web1-item
<CPU 코어 지정 --cpuset-cpus>
- 컨테이너에서 사용할 CPU 코어를 지정
<컨테이너 생성>
- stress --cpu 1: CPU에 대한 부하를 1개 생성하도록 지정
- -cpuset-cpus="2”: 컨테이너에서 사용할 CPU 코어를 지정하는데, CPU 코어 번호 "2"를 사용하도록 설정
- -cpuset-cpus="1,3”: 컨테이너에서 사용할 CPU 코어를 지정하는데, CPU 코어 번호 "1"과 "3"을 사용하도록 설정
ubuntu@host1:~/Labs/ch05$ docker container run -d --name=cpuset_1 --cpuset-cpus="2" leecloudo/stress:2.0 stress --cpu 1
b89e8a2176ca7755e8d5522f75d1743291880dcebc4888cb11fce03b0839d2c7
>>"leecloudo/stress" 이미지를 사용하여
"cpuset_1"이라는 이름의 컨테이너를 백그라운드에서 실행하고,
해당 컨테이너는 CPU 코어 "2"에서 스트레스 테스트를 수행
ubuntu@host1:~/Labs/ch05$ docker container run -d --name=cpuset_2 --cpuset-cpus="1,3" leecloudo/str
ess:2.0 stress --cpu 2
8d2aeffec2e81620361c089e59bed91da3220890aa71b8be750c826fc76796d5
>> "leecloudo/str" 이미지를 사용하여
"cpuset_2"라는 이름의 컨테이너를 백그라운드에서 실행
해당 컨테이너는 CPU 코어 "1"과 "3"에서 동시에 작업을 수행해 이러한 설정을 통해
특정 CPU 코어에 컨테이너를 할당하여 작업을 분산
ubuntu@host1:~/Labs/ch05$ docker container update --cpuset-cpus="1,3" cpus
cpus
>> "cpus"라는 이름의 컨테이너를 찾아서 해당 컨테이너의 CPU 코어 설정을 "1,3"으로 업데이트
CPU 코어 "1"과 "3"에서 동작하도록 변경
<CPU 자원의 양 설정 —cpus>
- 컨테이너가 사용할 CPU 자원의 양을 설정하는 옵션
- CPU 자원을 소수점 숫자로 표현해 호스트 시스템의 전체 CPU 자원 대비 해당 컨테이너가 사용할 비율을 나타냄 (0.2, 0.4 이런식으로 표현해야 함)
<컨테이너 생성>
- -cpus=0.2: 컨테이너에서 사용할 CPU 자원을 지정합니다. 여기서는 20%의 전체 CPU 자원을 할당하도록 설정
ubuntu@host1:~/Labs/ch05$ docker container run -d --name=cpus --cpus=0.2 leecloudo/stress:2.0 stress --cpu 2
1438ca67b645c829331c6864621a1a74d225f5dd85eabfe360e692cedbdbdb7c
>> "leecloudo/stress" 이미지를 사용하여
"cpus"라는 이름의 컨테이너를 백그라운드에서 실행하고
전체 CPU 자원의 20%를 사용하여 2개의 CPU에 대한 스트레스 테스트를 수행
<시스템 모니터링 서비스 htop>
- htop: top보다 업그레이드된 시스템 실시간 모니터링
ubuntu@host1:~/Labs/ch05$ sudo apt -y install htop
[sudo] ubuntu 암호:
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다... 완료
상태 정보를 읽는 중입니다... 완료
제안하는 패키지:
lm-sensors
다음 새 패키지를 설치할 것입니다:
htop
0개 업그레이드, 1개 새로 설치, 0개 제거 및 48개 업그레이드 안 함.
128 k바이트 아카이브를 받아야 합니다.
이 작업 후 342 k바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 <http://kr.archive.ubuntu.com/ubuntu> jammy/main amd64 htop amd64 3.0.5-7build2 [128 kB]
내려받기 128 k바이트, 소요시간 2초 (83.4 k바이트/초)
Selecting previously unselected package htop.
(데이터베이스 읽는중 ...현재 209583개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../htop_3.0.5-7build2_amd64.deb ...
Unpacking htop (3.0.5-7build2) ...
htop (3.0.5-7build2) 설정하는 중입니다 ...
Processing triggers for mailcap (3.70+nmu1ubuntu1) ...
Processing triggers for desktop-file-utils (0.26-1ubuntu3) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for gnome-menus (3.36.0-1ubuntu3) ...
Processing triggers for man-db (2.10.2-1) ...
ubuntu@host1:~/Labs/ch05$ htop
<화면 결과>
'클라우드 + DevOps > Docker' 카테고리의 다른 글
Docker :: 컨테이너 마운트mount 개념과 실습 (1) | 2024.02.27 |
---|---|
Docker :: 컨테이너 볼륨volume 개념과 실습 (0) | 2024.02.26 |
Docker 네트워크 실습 심화 :: HAproxy ACL 조건 설정 (1) | 2024.02.24 |
Docker 네트워크 실습 :: HAproxy 구성 (0) | 2024.02.23 |
Docker 네트워크 실습 :: NginX 컨테이너 리버스 프록시 구성 (0) | 2024.02.22 |