DockerFile构建自定义镜像

1.DockerFile介绍

DockerFile是用来构建Docker镜像的文件,命令参数脚本。

构建步骤:

1、编写一个dockerfile文件

2、docker build 构建成为一个镜像

3、docker 运行镜像

4、docker push 发布镜像(DockerHub、阿里云镜像仓库)

2.DockerFile的构建过程

1、每个保留关键字(指令)都是必须是大写字母

2、执行从上到下顺序执行

3、# 表示注释

4、每一个指令都会创建提交一个新的镜像层,并提交

由于DockerFile的指令每执行一次都会在docker上新建一层,所以过多无意义的层,会走啊成镜像膨胀过大。如:

FROM centos
RUN yum -y install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz

以上代码会执行三层镜像,但是其可以简化为以下格式

FROM centos
RUN yum -y install wget \
    && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
    && tar -xvf redis.tar.gz

如上,以 && 符号连接命令,这样执行后,只会创建一层镜像。

 DockerFile是面向开发的,我们以后要发布项目、做镜像,就需要编写DockerFile文件,这个文件十分简单。

3. DockerFile的命令

FROM          # 基础镜像,一切从这里开始构建
MAINTAINER    # 镜像是谁写的:姓名+邮箱
RUN           # 镜像构建的时候需要运行的命令
ADD           # 步骤:tomcat镜像,这个tomcat压缩包。添加内容
WORKDIR       # 镜像的工作目录 
VOLUME        # 挂载的目录
EXPOSE        # 暴露端口配置
CMD           # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT    # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD       # 当构建一个被继承DockerFile这个时候就会运行ONBUILD的指令。触发指令。
COPY          # 类似ADD,将我们文件拷贝到镜像中
ENV           # 构建的时候设置环境变量

 

4. 构建镜像

1.构建CentOS 镜像

1. 原生的centos

 很多命令并不存在

2. 编写dockerfile的文件 -> 通过这个文件构建镜像 -> 测试运行

编写dockerfile的文件,由于6月30日centOS7停止维护,许多yum源搜索不到,因此在文件中需要更换yum源

 通过文件构建镜像

命令最后有一个 .

命令: docker build -f dockerfile文件路劲 -t 镜像名:[tag] .

 3.增加之后的镜像

工作路径发生了改变,由 /bin/bash 变为了 /usr/local

能够使用ifconfig查询IP,还可以使用vim编辑命令

2. 构建Tomcat镜像

在构造之间需要添加tomcat压缩包和jdk压缩包 

1. 编写dockerfile

当文件名为官方默认的  Dockerfile,build就会自动寻找这个文件,不需要 -f 指定文件名

#基础镜像
FROM centos:7    
#作者信息
MAINTAINER cm<xxxx@qq.com>                  

#拷贝readme.txt至容器内
COPY readme.txt /usr/local/readme.txt       

#添加JDK压缩包至容器内,ADD命令可以自动解压
ADD jdk-8u144-linux-x64.tar.gz  /usr/local/ 
#添加tomcat压缩包至容器内,ADD命令可以自动解压
ADD apache-tomcat-8.5.61.tar.gz /usr/local/

#替换yum源
RUN cd /etc/yum.repos.d/
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g'      /etc/yum.repos.d/CentOS-* 
RUN yum update -y
#安装vim命令
RUN yum -y install vim						

#设置环境变量,一启动镜像会进入的工作目录
ENV MYPATH /usr/local				
#设置工作目录
WORKDIR $MYPATH								

#配置JAVA的环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_144		       
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#配置tomcat的环境变量
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.61  
ENV CATALINA_BASH /usr/local/apache-tomcat-8.5.61
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#配置tomcat暴露的端口8080
EXPOSE 8080										   

#运行时执行的命令
CMD /usr/local/apache-tomcat-8.5.61/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.61/bin/logs/catalina.out		

2. 构建镜像

#官方命名Dockerfile,build会自动寻找这个文件,就不需要 -f 指定文件名了
[root@iZuf6croidnppdd8ghjlguZ tomcat]# docker build -t diytomcat .

3. 启动镜像

# -d后台运行 -p暴露端口 --name自定义名字  -v挂载目录

docker run -d -p 8899:8080 --name mytomcat -v /home/tomcat/test:/usr/local/apache-tomcat-8.5.61/webapps/test -v /home/tomcat/logs:/usr/local/apache-tomcat-8.5.61/logs diytomcat

# 进入
[root@iZbp13qr3mm4ucsjumrlgqZ tomcat]#docker exec -it 9ad8bd8e9d /bin/bash

由于自定义的tomcat在启动时在外界挂载了日志目录,则可通过外界目录查看其日志文件

 

  • 14
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值