微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

dockerFile 学习

什么是dockerFile

  • 是用来构建docker镜像的构建文件,是由一系列命令和参数组成的脚本

  • 步骤

    • 编写dockerFile-> docker build -> docker run
  • eg

    • FROM scratch
      MAINTAINER https://github.com/CentOS/sig-cloud-instance-images
      ADD centos-6-docker.tar.xz /
      
      LABEL org.label-schema.schema-version="1.0" \
          org.label-schema.name="CentOS Base Image" \
          org.label-schema.vendor="CentOS" \
          org.label-schema.license="GPLv2" \
          org.label-schema.build-date="20181006"
      
      CMD ["/bin/bash"]
      
    • scratch 是最 基础的镜像

    • MAINTAINER是通讯地址

dockerFile解析过程

  • 约定
    • 每个命令都要大写,都要有参数至少一个
    • 指令从上到下顺序执行
    • #表示注释,每条指令都会创建一个新的镜像层, 并对镜像进行提交
  • 流程
    • docker从基础镜像运行一个容器
    • 执行一条指令对容器进行修改
    • 执行类似docker commit的操作提交一个新的镜像层
    • docker再基于刚提交的镜像运行一个新容器
    • 执行dockerFIle中的下一条指令知道所有指令都执行完成
  • dockerFile、docker镜像、docker容器代表三个不同的阶段
    • dockerFile是软件的原材料
    • docker镜像是软件的交付品
    • docker容器是软件的运行态

dockerFile保留字指令(体系结构)

  • FROM 所基于的基础镜像
  • MAINTAINER 作者的通讯地址
  • RUN 容器构建时需要运行的命令
  • EXPOSE 暴露出该镜像变成实例对外暴露端口
  • workdir 创建容器之后,认的落脚点
  • ENV 设置环境变量,之后可以在后序的指令中使用
  • ADD 拷贝进镜像+解压缩
  • copY 拷贝
  • VOLUME 容器数据卷,指定容器中的数据卷目录
  • CMD 指定一个容器启动时需要执行的命令
    • 可以有多个命令,但只有最后一个生效
    • CMD会被docker run后的参数替换
  • ENTRYPOINT 和CMD都是一样,指定一个容器启动时需要执行的命令
    • 不会被docker run参数替换,而是被追加组合
  • ONBUILD
    • 当构建一个被继承的dockerFIle时运行命令,父镜像在被子继承后的父镜像的onbuild被触发
    • 意思就是,如果别人继承了我,它运行了,那ONBUILD这里的指令就会被触发执行

自定义centos的dockerFile

  • 修改容器进入后的落脚点

  • 安装vim和ifconfig

  • 向外暴露80端口

  • FROM centos
    MAINTAINER https://blog.csdn.net/qq_34687559
    
    ENV  MYPATH /usr/local
    workdir $MYPATH
    
    RUN yum -y install vim
    RUN yum -y install net-tools
    
    EXPOSE 80
    
    CMD echo "success building a image"
    CMD /bin/bash
    

自定义根据参数查ip功能的dockerFIle

  • 输入ip,能自动curl

  • FROM centos
    MAINTAINER https://blog.csdn.net/qq_34687559
    
    RUN yum install -y curl
    
    CMD ["curl","-s","http://ip.cn"]
    
  • 上面的CMD可以替换成ENTRYPOINT,则就不会被覆盖,可以添加参数

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐