コンテナのCPU割当時間の割合を変更する方法
コンテナのCPU割当時間の割合を変更するには--cpu-sharesオプションを指定してdocker container runコマンド実行します。
オプションの説明(抜粋)
$ docker container run --help Usage: docker container run [OPTIONS] IMAGE [COMMAND] [ARG...] Run a command in a new container Options: -c, --cpu-shares int CPU shares (relative weight) --cpuset-cpus string CPUs in which to allow execution (0-3, 0,1) -d, --detach Run container in background and print container ID -i, --interactive Keep STDIN open even if not attached --name string Assign a name to the container -t, --tty Allocate a pseudo-TTY
オプションの説明
- --cpu-sharesオプション:CPU割当時間の相対値(デフォルトは1024)
- --cpuset-cpusオプション:ホストOS側のCPUコアの番号を指定する
- -dオプション:Dockerコンテナをバックグラウンドで起動する
- -iオプション:Dockerコンテナ起動時に、標準入力(STDIN)を受け付ける
- -tオプション:仮想端末(pseudo-TTY)をコンテナに割り当てる
- --nameオプション:作成するコンテナに名前を付ける
- ※-i -t -dを同時に使用する場合は、-itdオプションを使用できます
実行例
$ docker container run -itd --name test01 --cpu-shares=1024 --cpuset-cpus=0 centos:7.7.1908 dd if=/dev/zero of=/dev/null 1306bcb2c14af21c0f19acb6ae9dcdceade3caab97565e758cee3b650963d55f $ docker container run -itd --name test02 --cpu-shares=1024 --cpuset-cpus=0 centos:7.7.1908 dd if=/dev/zero of=/dev/null 080dde7a0a3d9ec3e345fb4fc03f940388fe9d78b94acb5bf216c6fddc58c1c6 $ docker container run -itd --name test03 --cpu-shares=1024 --cpuset-cpus=0 centos:7.7.1908 dd if=/dev/zero of=/dev/null 77552cd3cc9b69a6d99bfa822b79df4a72ddc5012088f7e7ac9a86a12e8b8dc6 $ top -c # 3つとも1024なので%CPUは約33%になる ... PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 31986 root 20 0 4408 356 280 R 33.1 0.0 0:44.08 dd if=/dev/zero of=/dev/null 32093 root 20 0 4408 356 280 R 33.1 0.0 0:38.16 dd if=/dev/zero of=/dev/null 32201 root 20 0 4408 352 280 R 33.1 0.0 0:36.35 dd if=/dev/zero of=/dev/null ... $ docker container run -itd --name test01 --cpu-shares=1024 --cpuset-cpus=0 centos:7.7.1908 dd if=/dev/zero of=/dev/null aa7424c53afb2e461b3691ef1a660b9abfd0c5ecce7c11130823c55c4822beda $ docker container run -itd --name test02 --cpu-shares=512 --cpuset-cpus=0 centos:7.7.1908 dd if=/dev/zero of=/dev/null 0a6a41e4228964867b60d2a9764c27337304ace1f307ced001aefffc6fb11024 $ docker container run -itd --name test03 --cpu-shares=512 --cpuset-cpus=0 centos:7.7.1908 dd if=/dev/zero of=/dev/null d5cfe69b502315184a43024e083b979162b1d77c612d1843403a09a686e20205 $ top -c # test01はtest02, test03の2倍の割当なので%CPUは約50%になる(test02, test03は約25%) ... PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1033 root 20 0 4408 352 280 R 49.5 0.0 0:32.79 dd if=/dev/zero of=/dev/null 1143 root 20 0 4408 352 280 R 24.9 0.0 0:12.27 dd if=/dev/zero of=/dev/null 1255 root 20 0 4408 356 280 R 24.9 0.0 0:10.69 dd if=/dev/zero of=/dev/null ...