DockerFile介绍
dockerFile是用来构建docker镜像的文件!命令参数脚本!
构建步骤:
- 编写一个dockerfile文件
- docker build 构建成一个镜像
- docker 运行镜像
- docker push 发布镜像(DcokderHub, 阿里云镜像仓库)
如centos的
很多官方镜像包都是基础包,很多功能没有,我们通常会自己搭建自己的镜像
DockerFile构建过程
基础知识:
- 每个保留关键字(指令)都是必须大写字母
- 执行从上到下顺序执行
- #表示注释
- 每一个指令都会创建提交一个新的镜像层,并提交
dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单
Dcoker镜像逐渐成为企业交付的标准,必须要掌握
步骤: 开发,部署,运维。。。缺一不可
DockerFile:构建文件,定义了一切的步骤,源代码
DockerImages:通过DockerFile构建生成的镜像,最终发布和运行产品
Docker容器:容器就是镜像运行起来提供服务器
DockerFile的指令
FROM 基础镜像,一切从这里开始构建
MAINTAINER 镜像是谁写的,姓名+邮箱
RUN 镜像构建的时候需要运行的命令
ADD 步骤,tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR 镜像的工作目录
VOLUME 挂载的目录
EXPOST 保留端口配置 若未指定,则需要使用-p运行镜像指定端口号
CMD 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT 指定这个容器启动的时候要运行的命令,可以追加命令
COPY 类似ADD将我们文件拷贝到镜像中
ENY 构建的时候设置环境变量
实战:构建自己的centos
DockerHub中99%的镜像都是从scratch这个基础镜像过来的,然后配置需要的软件和配置来进行构建
- 在home目录下新建一个dockerFile目录,在里面我们构建dockerFile文件,名叫mydockerfile-centos
2. 编写mydockerfile-centos中内容
命令: docker build -f dockerfile文件路径 -t 镜像名:[tag] .
测试运行:
我们会发现这里pwd和ifconfig都可以使用了,并且当前目录为/usr/local即刚才设置的路径
我们还可以通过docker history 镜像id来查看镜像的操作历史
所以我们平时拿到一个镜像就可以研究下这个镜像时如何得到的了
CMD和ENTRYPOINT区别
测试CMD
此处我们再次创建一个dockerfile文件
然后再build,启动容器
会发现此处启动容器后控制台会发现我们的ls -a命令直接生效
此时我们推出重新启动容器并添加一个命令-l,即
docker run centoscmstest:0.1 -l
会发现报错,因为在cmd的清理下, -l替换了ls -a,而-l不是命令,所以报错
我们需要将完整的命令写出来才正确,如下
测试ENTRYPOINT
重复上述操作即可,会发现后面直接加-l是可以的
实战:tomcat镜像
- 新建一个tomcat目录在其内准备好如下两个压缩包
- 创建redeme文件以及Dockerfile文件,官方命名Dockerfile,build会自动寻找这个文件,就不需要-f指定了
- 构建镜像
- 现在启动我们自己构建的tomcat镜像,并且将webapps下test目录挂载到本地,同时将日志目录也挂载
- 访问测试
- 发布项目(由于做了卷挂载,我们直接在本地编写项目就可以发布了)