Docker(5)----DockerFile的使用

1. 基本知识

  1. 概念:dockerfile是用来构建docker镜像的文件,是命令参数脚本。

  2. dockerfile文件中,每个指令都是必须是大写字母,执行是从上到下顺序执行,每个指令都会创建提交一个新的镜像层,并提交。

  3. 一般的,Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。

  4. 镜像构建步骤:

    1. 编写一个dockerfile文件
    2. docker build 构键成为一个镜像
    3. docker run 运行镜像

2. DockerFile指令

FROM    基础镜像,一切都是从这里开始的(常用)
MAINTAINER 镜像是谁写的,作者+邮箱(一般可以忽略)
RUN 镜像构建的时候响应运行的命令(常用)
ADD 步骤 添加内容(跟copy类似,我一般喜欢用copy)
WORKDIR 镜像的工作目录(常用)
VOLUME 挂载的目录(常用)
EXPOSE 保留端口配置(常用)
CMD 指定这个容器启动的时候要运行的命令,只有最后一个生效,可被替代(常用)
ENTRYPOINT   可以追加命令
ONBUILD 当构建一个被继承dockerfile这个时候就会运行 onbuild 的指令,触发指令
COPY  将我们的文件拷贝到镜像中(常用)
ENV 构建的时候设置环境变量(常用)

3. 实战构建一个tomcat镜像

# 1. 先准备好tomcat与jdk安装包,我用的是apache-tomcat-9.0.22.tar.gz  与jdk-8u271-linux-x64.tar.gz
root@ubuntu:/home/mylinux/temp# ls
apache-tomcat-9.0.22.tar.gz   jdk-8u271-linux-x64.tar.gz

# 2. 创建DockerFile文件并编写
# 以centos为主镜像,之后的再其基础上增加
FROM centos
# 将jdk包移动到镜像中且解压
RUN mkdir -p /usr/local/java
WORKDIR /usr/local/java
COPY jdk-8u271-linux-x64.tar.gz /usr/local/java
RUN tar -zxvf jdk-8u271-linux-x64.tar.gz
RUN rm -rf jdk-8u271-linux-x64.tar.gz
# 将tomcat包移动到镜像中且解压
RUN mkdir -p /usr/local/tomcat
WORKDIR /usr/local/tomcat
COPY apache-tomcat-9.0.22.tar.gz  /usr/local/tomcat
RUN tar -zxvf apache-tomcat-9.0.22.tar.gz 
RUN rm -rf apache-tomcat-9.0.22.tar.gz 

# 配置环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_271
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV TOMCAT_HOME /usr/local/tomcat/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin
# 暴露的端口号
EXPOSE 8080
# 建立容器之后,运行的指令
CMD /usr/local/tomcat/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.22/logs/catalina.out

# 3. 使用创建命令
# 要指定镜像的标签信息,可以通过 -t 选项
# 要指定那个Dockerfile文件 -f dockerfile文件
# 若你是的dockerfile文件默认是叫Dockerfile,则可以省-f
# docker build -t 指定镜像标签信息 .
# 这个最后面的 . 不要省了
root@ubuntu:/home/mylinux/temp# docker build -t mytomcat:1.0 .

# 部分截图
Step 11/18 : RUN rm -rf apache-tomcat-9.0.22.tar.gz
 ---> Running in 0a6c84d5dd8f
Removing intermediate container 0a6c84d5dd8f
 ---> 7c2d34ca3cde
Step 12/18 : ENV JAVA_HOME /usr/local/java/jdk1.8.0_271
 ---> Running in ffe9787f298c
Removing intermediate container ffe9787f298c
 ---> b5af52f6035f
Step 13/18 : ENV JRE_HOME ${JAVA_HOME}/jre
 ---> Running in 1e16a4e0b3ee
Removing intermediate container 1e16a4e0b3ee
 ---> 0075e377526c
Step 14/18 : ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
 ---> Running in e67d4927e5cb
Removing intermediate container e67d4927e5cb
 ---> 6e30f958b83d
Step 15/18 : ENV TOMCAT_HOME /usr/local/tomcat/apache-tomcat-9.0.22
 ---> Running in b32e2818879c
Removing intermediate container b32e2818879c
 ---> ff1785321fb7
Step 16/18 : ENV PATH $PATH:$JAVA_HOME/bin
 ---> Running in 83f6380c535a
Removing intermediate container 83f6380c535a
 ---> 9e1a6899f7a6
Step 17/18 : EXPOSE 8080
 ---> Running in 532cb9284dcc
Removing intermediate container 532cb9284dcc

# 4. 运行docker images查看
root@ubuntu:/home/mylinux/temp# docker images
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
mytomcat                            1.0                 4838095d5239        6 minutes ago       735MB

# 5. 运行镜像并测试
# 基础镜像是 centos 因此要用 -it
root@ubuntu:/home/mylinux/temp# docker run -it -d -p 8080:8080 mytomcat:1.0
d4c23e1ef733a64c4dff1c44f46b2289e2d32b4a25b30372ee493445fb44cd37
root@ubuntu:/home/mylinux/temp# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
d4c23e1ef733        mytomcat:1.0        "/bin/sh -c '/usr/lo…"   4 seconds ago       Up 2 seconds        0.0.0.0:8080->8080/tcp   serene_lalande

在这里插入图片描述

4. 查看镜像构建历史

  1. 使用命令 docker history 镜像id

    root@ubuntu:/home/mylinux/temp# docker images
    REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
    mytomcat                            1.0                 ca07bc505bf8        8 minutes ago       735MB
    centos                              latest              300e315adb2f        2 weeks ago         209MB
    
    root@ubuntu:/home/mylinux/temp# docker history ca07bc505bf8
    IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
    ca07bc505bf8        8 minutes ago       /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "/usr…   0B                  
    89dda7f9c51c        8 minutes ago       /bin/sh -c #(nop)  EXPOSE 8080                  0B                  
    c025463f9b0d        8 minutes ago       /bin/sh -c #(nop)  ENV PATH=/usr/local/sbin:…   0B                  
    b3a12e83e056        8 minutes ago       /bin/sh -c #(nop)  ENV TOMCAT_HOME=/usr/loca…   0B                  
    7642a3076e1a        8 minutes ago       /bin/sh -c #(nop)  ENV CLASSPATH=.:/usr/loca…   0B                  
    53e0aed39ab4        8 minutes ago       /bin/sh -c #(nop)  ENV JRE_HOME=/usr/local/j…   0B                  
    8c388df7d8d0        8 minutes ago       /bin/sh -c #(nop)  ENV JAVA_HOME=/usr/local/…   0B                  
    725b7f23d08e        8 minutes ago       /bin/sh -c rm -rf apache-tomcat-9.0.22.tar.gz   0B                  
    aa19999de466        8 minutes ago       /bin/sh -c tar -zxvf apache-tomcat-9.0.22.ta…   16.1MB              
    36a2b893106d        8 minutes ago       /bin/sh -c #(nop) COPY file:96db2769129d426f…   11.3MB              
    b20fa8db0b5b        8 minutes ago       /bin/sh -c #(nop) WORKDIR /usr/local/tomcat     0B                  
    52ba5a996abc        8 minutes ago       /bin/sh -c mkdir -p /usr/local/tomcat           0B                  
    ead9bbfe097a        8 minutes ago       /bin/sh -c rm -rf jdk-8u271-linux-x64.tar.gz    0B                  
    2dc48ebbaad0        9 minutes ago       /bin/sh -c tar -zxvf jdk-8u271-linux-x64.tar…   355MB               
    a48ad59d327c        9 minutes ago       /bin/sh -c #(nop) COPY file:06fad4625e93f252…   143MB               
    a76f469b87bb        9 minutes ago       /bin/sh -c #(nop) WORKDIR /usr/local/java       0B                  
    ef618c4658d3        9 minutes ago       /bin/sh -c mkdir -p /usr/local/java             0B                  
    300e315adb2f        2 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B                  
    <missing>           2 weeks ago         /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B                  
    <missing>           2 weeks ago         /bin/sh -c #(nop) ADD file:bd7a2aed6ede423b7…   209MB               
    root@ubuntu:/home/mylinux/temp# 
    

其他相关文章学习

Docker(1)----初步认识

Docker(2)----命令的学习

Docker(3)----对镜像进一步了解与容器数据卷

Dokcer(4)----网络

Docker(5)----DockerFile的使用

Docker(6)----Docker-compose的使用

Docker(7)----CI/CD的使用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值