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,则就不会被覆盖,可以添加参数

Guess you like

Origin blog.csdn.net/qq_34687559/article/details/120603004