Dockerfile
构建docker镜像的一个配置文件
说明了docker镜像应该如何去构建
FROM(必不可少)
FROM 指定当前镜像是基于那个镜像?
FROM 镜像名称:版本号
FROM java:8
WORKDIR
指定shell语句运行在那个路径下
WORKDIR /app 当前镜像的app目录下运行
CPPY/ADD
CPOY是将当前宿主机的文件拷贝到镜像中去
CPOY src/ /app
ADD /当前宿主机的文件目录 /构造的镜像中的文件目录
COPY一般是 当前文件地址的源地址
ADD也可以是链接url下的文件拷贝
RUN(构建容器脚本)
运行shell语句 运行在WORKDIR指定的运行路径下
CMD(容器运行脚本)/ENTRYPOINT
指定整个镜像启动起来的运行脚本
此脚本执行完容器的运行周期也就结束了
CMD tail -f 1.txt 阻塞式脚本
CMD cat 1.txt 显示数据
//1.txt是src宿主机的文件copy到/app里面 而且workdir指定的shell的语句运行的路径也是当前
ENTRYPOINT 也是指定容器运行的指定脚本
同时都指定的情况
CMD [“cat”,“1.txt”] json数组的格式指定
ENTRYPOINT [“cat”,“1.txt”] json数组的格式指定
依据shell 和json数组格式都可以
规则:
ENTRYPOINT不是json格式则是以它为标准,CMD配置无效
ENTRYPOINT是json格式,CDM也是json格式则是以ENTRYPOINT+CMD拼装成shell.
通过Dockerfile 构建镜像
docker build -f ./Dokerfile -t 镜像名称 :版本 .
docker build -f ./dockerfile-springboot -t javadyq .
docker run -it --name=容器名称 镜像名称:版本 /bin/bash
docker run 镜像名称
//创建镜像容器 名字自动分配?
| >>是追加内容
EXPOSE
指定当前镜像暴露出来的端口
EXPOSE 80
暴露的是镜像的端口
镜像类模板
容器就是类模板new的实例
docker inspect 镜像名称:版本 —>可以去查看镜像设置的暴露端口
ExposePorts:"80/tcp"指定的暴露端口
VOLUME
指定映射的文件
数据卷容器
docker run -it --name=d17 -v /volume centos /bin/bash
VOLUME /a/b
将容器里面/a/b目录映射到宿主机的目录下
???volume 和数据卷容器
一般映射到匿名卷
ENV (镜像的环境变量)/ARG(参数)
ENV A=10 || A 10
CMD echo $A
构建到运行一直生效
ARG
构建参数(RUN)
ARG B=19
CMD echo $ B
//docker run test(镜像名称) ----->数据为空ARG B=19
ENV A=$B
CMD echo $A
//docker run test(镜像名称) ------->结果为19
docker build -t test --build–arg B=12 .
这样镜像中的结果就改成了12
LABEL
指定元数据信息
FROM
LABEL k=“v” k1=“v1”
标签标识 镜像的处理 没有实质性作用
docker inspect 镜像名称
ONBUILD
ONBUILD ENV C=100
docker run test
在当前的镜像下是不会运行的
如果其他的镜像是FROM 此镜像的时候
docker build -t 镜像名称 (dockerfile文件的位置)
docker build -t test2 .
docker build -t test3 test3(test3在的Dockerfile文件)
基于此镜像的镜像构建容器时会出现ONBUILD配置