Dockerfile

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配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值