以上是用dockerfile来构建的nginx镜像示例。
一、构建stress压力测试软件镜像
##(1) 以下是Dockerfile内容(ENTRYPOINT是运行的环境):
FROM centos
RUN yum -y install wget epel-release
RUN yum install -y stress
ENTRYPOINT ["stress"]
##(2)构建命令(注意最后有一个点号):
docker build –t=”docker_image_name” stress .
##(3)运行容器(压力测试):
docker run -it --rm mystress:v1 --name mystress -h mystress -c 512 --cpu 1
##rm参数是停止后删除容器,-c 512 --cpu 1,-c为线程,-m为限制内存。
docker run -d --rm --name mystress2 -h mystress2 mystress:v1 --cpu 512 ## -d:后台运行,cpu占用 99.8
二、参数解释(第一个字都是大写):
FROM :指定镜像信息;MAINTAINER : 指定镜像的作者信息(包括联系信息);
RUN :指定镜像构建时的命令;
EXPOSE : 指定端口,可以指定多个(但不会自动打开,docker run时仍要指定);
CMD与ENTERYPOINT : 指定容器运行时运行的命令(如run容器时指定了命令,那么CMD命令会被覆盖,后者则不会,除非指定了ENTERYPOINT,所以一般指定容器运行时运行的程序用ENTERYPOINT,参数用CMD[]来指定);
CMD [ “executable” ,”param1” ,“param2” ] (exec模式)
CMD command param1 param2 (shell模式)
CMD [ “param1”,”param2” ] (作为ENTRYPOINT指令的默认参数)
ADD\COPY\VOLUME : 设置目录与文档(copy的文档目录一般放在与dockerfile同级),ADD\COPY的区别是add包含了tar的解压功能,copy纯粹是cp文档; VOLUME 用来添加卷
ONBUILD :类似触发器命令(如后面加copy命令,但不会在本次构建a(生成镜像image_a)中执行,会在下次构建b时(FROM的镜像指定为构建a生成的镜像image_a)执行构建a中的ONBUILD指令)
WORKDIR \ ENV \ USER :设置镜像构建与容器运行时的环境设置(要使用绝地路径,不然路径会传递下去)。
ENV: 在镜像构建过程与容器运行过程中都有效。
三、常用镜像相关的命令:
Docker history <image name:版本号> ##查看镜像的构建过程;
Docker build -t=’test_xxx’ . --no-cache ##构建时不使用缓存
(或在dockerfile中加入”ENV REFRESH_DATE 2019-09-17” 也会刷新缓存 )。