持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情
这里我们再通过一次实战熟悉一下docker,这里我们不是之前实战来创建一个执行程序的image,而是打包一个工具,是一个linux命令行工具--stress(linux系统的压力测试工具)。目前这两种就是常用的image使用形式了
1. stress基本使用
这里我们进入一个unbuntu容器并下载stress,来看一下这个的基本使用:
通过stress,我们可以分配一些工作进程并指定占用的内存:
这里其实就是创建,分配内存,释放,循环这个过程来进行测试。
这里我们填一个大一点数字:
这里就有fail log了,就是说内存分配太多,超过限制了,这个docker host有多少内存:
所以在创建的容器内存不会超过宿主机,这里具体的内存控制和分析后面还会用到,这里还是回归目的。
2. 打包过程
2.1 编写Dockerfile文件
这样如何指定参数呢?例如之前的stress我们分配的内存可能经常变化,能不能把这个暴露成一个字段,不然灵活性就太低了。
这里我们可以使用CMD结合ENTRYPOINT的方式。
使用ENTRYPOINT来指定命令
使用CMD来指定参数
看一下实例:
2.2 build run 测试
这里我们run:
这样就类似于之前之前敲stress的结果。
此时我们希望run stress并指定参数,就可以这样:
所以刚才的Dockerfile是可以的,因为后面的命令行参数:--vm 1 其实都是放到CMD来接受了,所以这种CMD + ENTRYPOINT结合方式是特别适用于这类型的image的,当然CMD还可以放一个默认参数。