docker build stress命令
一、简介二、创建一个ubuntu image[root@iZ2vceej7yes1abpm7yec2Z ~]# docker run -it ubuntuUnable to find image 'ubuntu:latest' locallylatest: Pulling from library/ubuntu6a5697faee43: Pull completeba13d3bc422b: Pul
·
一、简介
stress 可以对linux机器做压力测试,是一个比较好用的命令
二、创建一个ubuntu image
[root@iZ2vceej7yes1abpm7yec2Z ~]# docker run -it ubuntu
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
6a5697faee43: Pull complete
ba13d3bc422b: Pull complete
a254829d9e55: Pull complete
Digest: sha256:fff16eea1a8ae92867721d90c59a75652ea66d29c05294e6e2f898704bdb8cf1
Status: Downloaded newer image for ubuntu:latest
[root@iZ2vceej7yes1abpm7yec2Z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest d70eaf7277ea 2 weeks ago 72.9MB
三、在容器中安装stress
由于pull下来的ubuntu是一个基础班,非常的干净,连vim都没有,所以先更换源:
root@76c25bdb1008:/# echo "deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse" >/etc/apt/sources.list
root@76c25bdb1008:/#
root@76c25bdb1008:/# more etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
root@76c25bdb1008:/#
root@76c25bdb1008:/# echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse" >> /etc/apt/sources.list
root@76c25bdb1008:/#
root@76c25bdb1008:/# echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse" >> /etc/apt/sources.list
root@76c25bdb1008:/#
root@76c25bdb1008:/# echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse" >> /etc/apt/sources.list
root@76c25bdb1008:/#
root@76c25bdb1008:/# echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse" >> /etc/apt/sources.list
root@76c25bdb1008:/#
root@76c25bdb1008:/# echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse" >> /etc/apt/sources.list
root@76c25bdb1008:/#
root@76c25bdb1008:/# echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse" >> /etc/apt/sources.list
root@76c25bdb1008:/#
root@76c25bdb1008:/# echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse" >> /etc/apt/sources.list
root@76c25bdb1008:/#
root@76c25bdb1008:/# echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse" >> /etc/apt/sources.list
root@76c25bdb1008:/#
root@76c25bdb1008:/# echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse" >> /etc/apt/sources.list
apt-get update && apt-get install -y stress
root@76c25bdb1008:/# apt update
Get:1 http://mirrors.aliyun.com/ubuntu xenial InRelease [247 kB]
Get:2 http://mirrors.aliyun.com/ubuntu xenial-security InRelease [109 kB]
Get:3 http://mirrors.aliyun.com/ubuntu xenial-updates InRelease [109 kB]
Get:4 http://mirrors.aliyun.com/ubuntu xenial-proposed InRelease [260 kB]
Get:5 http://mirrors.aliyun.com/ubuntu xenial-backports InRelease [107 kB]
Get:6 http://mirrors.aliyun.com/ubuntu xenial/universe Sources [9802 kB]
Get:7 http://mirrors.aliyun.com/ubuntu xenial/restricted Sources [5179 B]
Get:8 http://mirrors.aliyun.com/ubuntu xenial/main Sources [1103 kB]
Get:9 http://mirrors.aliyun.com/ubuntu xenial/multiverse Sources [215 kB]
Get:10 http://mirrors.aliyun.com/ubuntu xenial/multiverse amd64 Packages [176 kB]
Get:11 http://mirrors.aliyun.com/ubuntu xenial/universe amd64 Packages [9827 kB]
Get:12 http://mirrors.aliyun.com/ubuntu xenial/restricted amd64 Packages [14.1 kB]
Get:13 http://mirrors.aliyun.com/ubuntu xenial/main amd64 Packages [1558 kB]
Get:14 http://mirrors.aliyun.com/ubuntu xenial-security/universe Sources [244 kB]
Get:15 http://mirrors.aliyun.com/ubuntu xenial-security/multiverse Sources [4952 B]
Get:16 http://mirrors.aliyun.com/ubuntu xenial-security/main Sources [299 kB]
Get:17 http://mirrors.aliyun.com/ubuntu xenial-security/restricted Sources [3239 B]
Get:18 http://mirrors.aliyun.com/ubuntu xenial-security/main amd64 Packages [1841 kB]
Get:19 http://mirrors.aliyun.com/ubuntu xenial-security/multiverse amd64 Packages [9249 B]
Get:20 http://mirrors.aliyun.com/ubuntu xenial-security/universe amd64 Packages [969 kB]
Get:21 http://mirrors.aliyun.com/ubuntu xenial-security/restricted amd64 Packages [15.9 kB]
Get:22 http://mirrors.aliyun.com/ubuntu xenial-updates/universe Sources [533 kB]
Get:23 http://mirrors.aliyun.com/ubuntu xenial-updates/restricted Sources [3941 B]
Get:24 http://mirrors.aliyun.com/ubuntu xenial-updates/multiverse Sources [13.5 kB]
Get:25 http://mirrors.aliyun.com/ubuntu xenial-updates/main Sources [655 kB]
Get:26 http://mirrors.aliyun.com/ubuntu xenial-updates/universe amd64 Packages [1513 kB]
Get:27 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 Packages [2353 kB]
Get:28 http://mirrors.aliyun.com/ubuntu xenial-updates/restricted amd64 Packages [16.4 kB]
Get:29 http://mirrors.aliyun.com/ubuntu xenial-updates/multiverse amd64 Packages [26.7 kB]
Get:30 http://mirrors.aliyun.com/ubuntu xenial-proposed/main Sources [9460 B]
Get:31 http://mirrors.aliyun.com/ubuntu xenial-proposed/universe Sources [4365 B]
Get:32 http://mirrors.aliyun.com/ubuntu xenial-proposed/universe amd64 Packages [18.3 kB]
Get:33 http://mirrors.aliyun.com/ubuntu xenial-proposed/main amd64 Packages [98.5 kB]
Get:34 http://mirrors.aliyun.com/ubuntu xenial-backports/universe Sources [12.3 kB]
Get:35 http://mirrors.aliyun.com/ubuntu xenial-backports/main Sources [7276 B]
Get:36 http://mirrors.aliyun.com/ubuntu xenial-backports/universe amd64 Packages [12.6 kB]
Get:37 http://mirrors.aliyun.com/ubuntu xenial-backports/main amd64 Packages [10.9 kB]
Fetched 32.2 MB in 7s (4906 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
root@76c25bdb1008:/#
root@76c25bdb1008:/#
root@76c25bdb1008:/#
root@76c25bdb1008:/#
root@76c25bdb1008:/# apt-get install -y stress
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
stress
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 16.7 kB of archives.
After this operation, 75.8 kB of additional disk space will be used.
Get:1 http://mirrors.aliyun.com/ubuntu xenial/universe amd64 stress amd64 1.0.4-1 [16.7 kB]
Fetched 16.7 kB in 0s (59.7 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package stress.
(Reading database ... 4121 files and directories currently installed.)
Preparing to unpack .../stress_1.0.4-1_amd64.deb ...
Unpacking stress (1.0.4-1) ...
Setting up stress (1.0.4-1) ...
root@76c25bdb1008:/# which stress
/usr/bin/stress
root@76c25bdb1008:/#
stress --help
stress --help
`stress' imposes certain types of compute stress on your system
Usage: stress [OPTION [ARG]] ...
-?, --help show this help statement
--version show version statement
-v, --verbose be verbose
-q, --quiet be quiet
-n, --dry-run show what would have been done
-t, --timeout N timeout after N seconds
--backoff N wait factor of N microseconds before work starts
-c, --cpu N spawn N workers spinning on sqrt()
-i, --io N spawn N workers spinning on sync()
-m, --vm N spawn N workers spinning on malloc()/free()
--vm-bytes B malloc B bytes per vm worker (default is 256MB)
--vm-stride B touch a byte every B bytes (default is 4096)
--vm-hang N sleep N secs before free (default none, 0 is inf)
--vm-keep redirty memory instead of freeing and reallocating
-d, --hdd N spawn N workers spinning on write()/unlink()
--hdd-bytes B write B bytes per hdd worker (default is 1GB)
stress --vm 1 --verbose
启动一个worker ,分配256MB 然后释放 ,一直循环往复
:/# stress --vm 1 --verbose
stress: info: [440] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: dbug: [440] using backoff sleep of 3000us
stress: dbug: [440] --> hogvm worker 1 [441] forked
stress: dbug: [441] allocating 268435456 bytes ...
stress: dbug: [441] touching bytes in strides of 4096 bytes ...
stress: dbug: [441] freed 268435456 bytes
stress: dbug: [441] allocating 268435456 bytes ...
stress: dbug: [441] touching bytes in strides of 4096 bytes ...
stress: dbug: [441] freed 268435456 bytes
stress: dbug: [441] allocating 268435456 bytes ...
stress: dbug: [441] touching bytes in strides of 4096 bytes ...
stress: dbug: [441] freed 268435456 bytes
stress: dbug: [441] allocating 268435456 bytes ...
如果分配的内存超过宿主机内存会发生什么?
/# stress --vm 1 --vm-bytes 50000M --verbose
stress: info: [442] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: dbug: [442] using backoff sleep of 3000us
stress: dbug: [442] --> hogvm worker 1 [443] forked
stress: dbug: [443] allocating 52428800000 bytes ...
stress: FAIL: [443] (494) hogvm malloc failed: Cannot allocate memory
stress: FAIL: [442] (394) <-- worker 443 returned error 1
stress: WARN: [442] (396) now reaping child worker processes
stress: FAIL: [442] (451) failed run completed in 0s
容器 无法分配。
四、编写docker file 然后build一个命令行程序
ubuntu-stress]# more Dockerfile
FROM ubuntu
RUN apt-get update && apt-get install -y stress
ENTRYPOINT ["/usr/bin/stress"]
CMD []
ubuntu-stress]# docker build -t ninesun0318/ubuntu-stress .
ubuntu-stress]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ninesun0318/ubuntu-stress latest 675f527c4ed1 About a minute ago 99.7MB
ninesun0318/flask latest 1f7f63f7ff02 26 hours ago 884MB
python 3.6 1297140c6dd2 6 days ago 874MB
ubuntu latest d70eaf7277ea 2 weeks ago 72.9MB
centos latest 0d120b6ccaa8 3 months ago 215MB
hello-world latest bf756fb1ae65 10 months ago 13.3kB
通过entrypoint + cmd 是一种流行的运行命令行方式
已一种传参的方式在容器中运行命令
ubuntu-stress]# docker run -it ninesun0318/ubuntu-stress --vm 1 --verbose
stress: info: [1] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: dbug: [1] using backoff sleep of 3000us
stress: dbug: [1] --> hogvm worker 1 [5] forked
stress: dbug: [5] allocating 268435456 bytes ...
stress: dbug: [5] touching bytes in strides of 4096 bytes ...
stress: dbug: [5] freed 268435456 bytes
stress: dbug: [5] allocating 268435456 bytes ...
stress: dbug: [5] touching bytes in strides of 4096 bytes ...
stress: dbug: [5] freed 268435456 bytes
stress: dbug: [5] allocating 268435456 bytes ...
stress: dbug: [5] touching bytes in strides of 4096 bytes ...
stress: dbug: [5] freed 268435456 bytes
stress: dbug: [5] allocating 268435456 bytes ...
更多推荐
已为社区贡献6条内容
所有评论(0)