【Docker】docker镜像构建
jmeter使用分布式方法进行压测时,有时会需要较多数量的slave,估需要将压力机进行容器化,并且使其是无状态的,支持快速横向扩容。
一、编写Dockerfile
Dockerfile的语法用法可参考:https://www.runoob.com/docker/docker-dockerfile.html
主要的注意事项有:
1、Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。可用&&符号连接命令,减少层数。
FROM openjdk:8-jdk-slim RUN apt-get clean RUN apt-get update RUN apt-get -qy install wget 以上执行会创建 3 层镜像。可简化为以下格式: FROM openjdk:8-jdk-slim
RUN apt-get clean \
&& apt-get update \
&& apt-get -qy install wget
以上执行只会创建 1 层镜像
2、可以将本地的镜像作为基础镜像
如本地有REPOSITORY为qa/jmeter,TAG为content的镜像,可使用FROM引入。
FROM qa/jmeter:content
我主要是使用该方式为已有的镜像添加后置命令执行,在容器启动之后,执行命令,启动服务。
二、构建镜像
docker的命令可参考:https://www.runoob.com/docker/docker-image-usage.html
主要的注意事项有:
1、构建时可能因为网络问题导致失败,这时候建议创建个基础镜像,使用该镜像创建容器,在容器中将环境配置好后,将容器commit到镜像中。
2、构建时使用的名字和tag是本地已存在的,将会对已有的镜像进行更新。
三、上传镜像
使用docker login harborUrl,登录harbor。
docker login harbor.xxx.com harbor.xxx.com为harbor仓库地址
使用docker push imageId 上传镜像。
docker push dsjg234kad harbor.xxx.com/qa/jmeter:content harbor.xxx.com/qa/jmeter:content 为上传路径,镜像名字与TAG用:分隔开