• DockerFile的基本知识及利用DockerFile构建镜像


    1、概念

    DockerFile是用来构建Docker镜像的构建文件,是一段命令脚本

    2、基础知识 

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

    (2)执行顺序从上往下

    (3)#表示注释

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

    3、DockerFile指令

    1. FROM #基础镜像
    2. MAINTAINER #维护者信息(姓名+邮箱)
    3. RUN #镜像构建的时候需要运行的命令
    4. ADD #拷贝文件,会自动解压
    5. WORKDIR #设置镜像的工作目录
    6. VOLUME #设置卷,挂载主机目录
    7. EXPOSE #对外暴露的端口
    8. CMD #指定这个容器启动的时候要运行的命令(CMD一行只执行一个命令,可以写多个CMD)
    9. ENTRYPOINT #指定这个容器启动的时候要运行的命令(可以追加命令)
    10. ONBUILD #ONBUILD是一个特殊的指令它后面跟的是其它指令,比如 RUN, COPY 等,而这些指令,在当前镜像构建时并不会被执行。只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行
    11. COPY #类似ADD,将我们的文件拷贝到镜像里
    12. ENV #构建的时候设置环境变量

    4、使用DockerFile构建一个CentOS镜像

    (1)新建一个名为mydockerfile的DockerFile

    vim mydockerfile

    (2)配置mydockerfile文件的脚本命令

    1. #基础镜像
    2. FROM centos:7
    3. #维护者信息(姓名+邮箱)
    4. MAINTAINER ken<邮箱地址>
    5. #设置环境变量,环境变量名为MYPATH的路径为/usr/local,在关键字ENV后通过一个名字对应一个路径来创建环境变量
    6. ENV MYPATH /usr/local
    7. #设置镜像的工作目录
    8. WORKDIR $MYPATH
    9. #镜像构建的时候需要运行的命令(因为基础的centos镜像没用vim命令,但希望自己构建的centos镜像能使用vim命令,所以在RUN后写需要运行的命令)
    10. RUN yum -y install vim
    11. #对外暴露的端口
    12. EXPOSE 80
    13. #指定这个容器启动的时候要运行的命令(CMD一行只执行一个命令,可以写多个CMD)
    14. CMD echo $MYPATH
    15. CMD echo "---end---"
    16. CMD /bin/bash

    (3)通过mydockerfile文件构建Docker镜像

    1. #选项及解释
    2. -f表示DockerFile文件的所在路径
    3. -t的t是tag,表示生成的镜像的名称和版本号
    4. .表示当前构建时上下文的路径为当前目录
    5. docker build -f mydockerfile -t mycentos:0.1 .

    (4)最后查看构建结果

    (5)查看镜像

    (6)启动镜像

    (7)查看当前目录,发现启动镜像后直接进入了我们在mydockerfile文件里用WORKDIR指令设置的工作目录而不再是根目录

    基础的centos镜像:

    配置了工作目录的mycentos镜像:

    (8)测试我们在用RUN指令下载的vim命令是否能用

    基础的centos镜像:

    以centos镜像为基础,下载了vim命令的mycentos镜像:

    (9)通过以下命令查看镜像的历史构建记录

    docker history 镜像id或镜像名称

    例: 

    其他:

    1、CMDENTRYPOINT的区别

    CMD

    (1)新建一个名为mydockerfile-test-cmd的DockerFile,内容如下

    1. FROM centos:7
    2. CMD ["ls","-a"]

    (2)通过mydockerfile-test-cmd文件构建Docker镜像

    (3) 启动mycentos-test-cmd镜像

    (4)往mycentos-test-cmd镜像追加其他命令(在docker run命令行中输入命令会覆盖掉原来的CMD命令)

     

    错误的追加命令方式:

    ENTRYPOINT

     (1)新建一个名为mydockerfile-test-entrypoint的DockerFile,内容如下

    1. FROM centos:7
    2. ENTRYPOINT ["ls","-a"]

     

    (2)通过mydockerfile-test-entrypoint文件构建Docker镜

    (3) 启动mycentos-test-entrypoint镜像

    (4)往mycentos-test-entrypoint镜像追加其他命令(在docker run命令行中输入命令不容易被覆盖掉原来的ENTRYPOINT命令,且能在原有的ls -a命令后为ENTRYPOINT命令追加参数)

     

    创作不易,如果这篇文章对你有帮助,希望能点个赞帮助文章的推广,如果文章有错漏,希望各位能批评指正,谢谢大家。

  • 相关阅读:
    速看!!带你揭秘3D建模行业内幕!!
    centos7 离线升级/在线升级操作系统内核
    《HelloGitHub》第 78 期
    YOLO目标检测——PCB缺陷数据集下载分享【含对应voc、coco和yolo三种格式标签】
    密西根大学张阳教授受聘中国上海交通大学客座教授(图)
    C++ 异常处理学习笔记
    AWS S3 基本概念
    “银行家算法”大揭秘!在前端表格中利用自定义公式实现“四舍六入五成双”
    遥感之特征选择-禁忌搜索算法
    基于Quartz实现动态定时任务
  • 原文地址:https://blog.csdn.net/m0_64284147/article/details/126615039