블록 IO를 도커 컨테이너로 제한하기 위해 올바른 장치를 얻는 방법은 무엇입니까?

블록 IO를 도커 컨테이너로 제한하기 위해 올바른 장치를 얻는 방법은 무엇입니까?

(이 질문을 stackoverflow에 게시했지만 여기에 더 적절한 곳이 있을 수 있으며 필요한 경우 다른 질문을 삭제하겠습니다.)

여러 Docker 컨테이너에 대한 블록 IO 작업 속도를 제한해야 합니다.

이를 달성하려면 다음과 같은 작업을 수행해야 합니다 docker run -it --device-read-bps /dev/sda:1mb ubuntu.문서.

제 질문은 각 컨테이너에 대해 올바른 장치를 가져와 제한을 설정하는 방법입니다. Docker 검사를 통해 이 정보를 얻을 수 있는 방법이 있나요?

docker inspect my_container | grep DeviceName아무것도 반환하지 않습니까?

출력은 df -h다음과 같습니다

Filesystem            Size  Used Avail Use% Mounted on
devtmpfs              7.9G     0  7.9G   0% /dev
tmpfs                 7.9G     0  7.9G   0% /dev/shm
tmpfs                 7.9G  1.4M  7.9G   1% /run
tmpfs                 7.9G     0  7.9G   0% /sys/fs/cgroup
/dev/mapper/vg0-data   31G  6.9G   23G  24% /
tmpfs                 7.9G     0  7.9G   0% /tmp
/dev/sda3             283M   27M  238M  11% /boot
/dev/sda2              10M  2.2M  7.9M  22% /boot/efi
/dev/sdb1              63G  198M   60G   1% /mnt/data
overlay                31G  6.9G   23G  24% /var/lib/docker/overlay2/0c917cf591efb40f75a450b6ad93bf9cf06c91f7f625e1f073887031d152f444/merged
shm                    64M     0   64M   0% /var/lib/docker/containers/b21b4b5d27bd57f04204d3a54f11930a532bdc8c56cabfe903f34b955f3c81f1/mounts/shm
overlay                31G  6.9G   23G  24% /var/lib/docker/overlay2/8b198c4829d4eb13c21e7c9d1be99aa00986d64f13f50a454abc539aed37e759/merged
shm                    64M     0   64M   0% /var/lib/docker/containers/1667192b0b8026eb517894fdf72f71c6aca5a0ff78648447c12175c96b76990c/mounts/shm
overlay                31G  6.9G   23G  24% /var/lib/docker/overlay2/72efa8bcdec2c529ca3ebde224f8d14e22780636c614fe45a0228eb957a99351/merged
shm                    64M     0   64M   0% /var/lib/docker/containers/a7123dfebcc42a675b6ccb0435df1cc24bcd0a39847fb4cb5a3fdcaf2d38089f/mounts/shm
overlay                31G  6.9G   23G  24% /var/lib/docker/overlay2/65ede56c537f5de766f616f13df90aae46f287b9e28703496f90af9f74f4c463/merged
shm                    64M     0   64M   0% /var/lib/docker/containers/6a24ef7116078d48fde87fc47a8efd194ef541ffb7d85ae4bec34e5086e46d4b/mounts/shm
overlay                31G  6.9G   23G  24% /var/lib/docker/overlay2/2b444d99740719500285bd94eb389815e631cd183cf3637e64fa40999ccf2530/merged
shm                    64M     0   64M   0% /var/lib/docker/containers/8c7300dcd9981878ce46f4b805d65b72bf3afbf87d9510312ba5110b95ae8cf4/mounts/shm
overlay                31G  6.9G   23G  24% /var/lib/docker/overlay2/9ea1ad005bcbcdb0e52d6f2b05568268e3a6e318f8d30986e0fac56523408e89/merged
shm                    64M     0   64M   0% /var/lib/docker/containers/5eb12be6805976d230f5ec17bda65100745bebeccea4ab7c2bcf2260405ecb96/mounts/shm

나는 이 질문을 묻는 많은 스레드를 발견했습니다.이것, 그러나 명확한 답변은 제공되지 않았습니다

답변1

Docker는 읽기/쓰기 작업을 위해 블록 장치를 얻는 신중한 방법을 지정하지 않습니다.

성공적인 솔루션:

  • 운영 체제의 모든 블록 장치를 가져옵니다(운영 체제 관련 명령).
  • 모든 장치에 제한을 설정하십시오. 부작용은 관찰되지 않았습니다.

관련 정보