Docker容器技术:Dockerfile实战2

82 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情

这里我们再通过一次实战熟悉一下docker,这里我们不是之前实战来创建一个执行程序的image,而是打包一个工具,是一个linux命令行工具--stress(linux系统的压力测试工具)。目前这两种就是常用的image使用形式了

1. stress基本使用

image.png

这里我们进入一个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还可以放一个默认参数。