Dockerfile介绍

Dockerfile简介
通过dockerfile来创建docker镜像,使用方法
目录结构
tomcat/
└── Dockerfile
编译命令(不加tag)
docker build  ucweb
docker build -f tomcat/Dockerfile
上面命令编译出来的镜像是没有名字和tag的,只有ID号。如果想自定义镜像名和tag,增加参数-t
docker build  tomcat -t tomcat:0.1   # name[:tag]
 
Dockerfile内容 
一个dockerfile文件包括下面以下关键字(组成部分)
1. FROM
文件第一行,用于创建镜像时使用的基础镜像,必须指定。建议使用当前官方基础镜像,推荐  Alpine ,一个非常小的完全的发行版。
2. LABEL
标签,添加标识性内容。多行用\分隔。可能有其他作用暂不深入。
3. MAINTAINER  
作者信息,标识,可有可无
4. RUN
镜像编译过程中执行的命令,第一个run命令都会提交一层文件,如果涉及到apt-get或者yum类的功能,在允许的情况下,建议在一条run命令中执行,会减小最终镜像的大小。
可重复使用。
5. CMD
容器运行时执行的命令,一般为dockerfile文件最后一项,格式  CMD ['command', 'parm1', 'parm2', '...']。保证命令前台执行,否则命令执行完成,容器也停止运行,无法在后台运行程序。
6. ENV
镜像编译过程及容器运行时使用的环境变量: ENV  key value
7.EXPOSE 
容器需要暴露的端口 : EXPOSE 8080 90 80  
8.ADD or COPY
编译过程中增加文件到镜像中, ADD src  dest  # dest不存在时自动创建
src为文件夹时,使用COPY SRC DEST
9. VOLUME
指定需要挂载的卷(目录), 容器运行时通过 -v 映射一个宿主的目录到容器内部
10. WORKDIR
CMD后命令执行时的当前目录
 
例子
FROM ubuntu   
#通过对centos 和ubuntu官方镜像文件大小的比较,建议使用ubuntu,基础镜像只有120MB。后期测试Alpine,尽量减小镜像大小.
MAINTAINER kevin3101
#作者或组织信息
COPY tomcat /usr/local/tomcat  
#复制java代码到镜像中,注意目标路径不能是上一级目录,与源对等。
ENV JAVA_HOME /usr/local/jdk   
#为减小镜像大小,这里使用宿主的java文件,运行容器时通过volume挂载主机的java home到容器。 
ENV CLASSPATH=.:$JAVA_HOME/lib/tools.jar
# 不再把java文件打到镜像里
ENV PATH=$JAVA_HOME/bin:$PATH     
#设置CMD 运行时的java环境变量
VOLUME ["/usr/local/jdk"]     
#挂载的卷(目录)
WORKDIR /usr/local/tomcat     
#当前工作目录
EXPOSE 8080               
#暴露的端口
CMD ["/usr/bin/nohup", "bin/startup.sh"]   
#容器运行时的命令,注意保持进程一直在前台运行,否则命令执行完,容器即停止运行。

 

 
运行命令:
docker run -d -v $JAVA_HOME:/usr/local/jdk -p 8080:8080 tomcat
 
镜像优化:
不管从存储还是发布上考虑,镜像文件的大小对docker的应用都有不小的影响。在编译镜像的过程中,通过多种方式尽量减小镜像的大小。
1.每次编译都使用基础镜像,初期建议使用ubuntu,在docker运行正常的情况下考虑使用Alpine。
在docker环境下,centos和ubuntu不同的包管理方式及运行模式对运维和使用,几乎没有什么差距。而且docker官方很多镜像都是基于ubutntu来构建的。
2.使用宿主机的java环境,通过VOLUME挂载到容器内,同时设置程序运行时的环境变量。
一个java包解压后370M,如果放在镜像内部的话,最后的应用镜像打出来将近600M,编译速度,发部时间都有较大的影响。
3.尽量减少RUN指令的次数,特别是在run指令中执行软件安装命令的,尽可能放在一条RUN指令里执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值