zoukankan      html  css  js  c++  java
  • 用Dockerfile构建镜像

    Dockerfile 简介

    构建Docker镜像有两种方法:

    • 一种是利用Dockerfile编译构建,命令格式为docker build --pull -t $(REGISTRY)/$(IMAGE_NAME):$(IMAGE_TAG) .
      [docker-build官指]https://docs.docker.com/engine/reference/commandline/build/
    • 一种是用正在运行的容器commit为目标镜像,命令格式为docker commit $(DockerID) $(REGISTRY)/$(IMAGE_NAME):$(IMAGE_TAG)
      [docker-commit官指]https://docs.docker.com/engine/reference/commandline/commit/#commit-a-container
      第一种方法有迹可循,是推荐的方法。第二种方法适用于对Docker命令不熟悉的亲,对运行的容器配置完成后,进行打包成新的镜像。
      这里介绍利用Dockerfile构建镜像,喜欢看官方文档的亲请点这里[官方Dockerfile用法说明]https://docs.docker.com/engine/reference/builder/。
      Dockerfile是一个Docker镜像的描述文件,我们可以理解成火箭发射的A、B、C、D…的步骤。Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

    一个Dockerfile示例如下:

    # 基于debian镜像,版本号为jessie
    FROM debian:jessie
    
    # 创建目录
    RUN mkdir /var/log -p
    
    # 拷贝kubemark到容器内,如果是压缩文件则会解压
    COPY kubemark /kubemark
    COPY voyage-agent  /voyage-agent
    
    # 拷贝文件到容器内,如果没有该目录会自动创建该目录
    ADD voyage-cni /opt/cni/bin/
    ADD loopback /opt/cni/bin/
    ADD 1-voyage.conf /etc/cni/net.d/
    
    #复制该脚本至镜像中,并修改其权限
    ADD run.sh /run.sh
    RUN chmod 775 /run.sh
    
    #当启动容器时执行的脚本文件, 只能有一条CMD,如果有多条,则只有第一条生效. CMD和RUN执行的时机不同,CMD是在容器启动之后执行的。
    CMD ["/run.sh"]
    

    由上可知,Dockerfile结构大致分为四个部分:
      (1)基础镜像信息
      (2)维护者信息
      (3)镜像操作指令
      (4)容器启动时执行指令
      Dockerfile每行支持一条指令,每条指令可带多个参数,支持使用以#号开头的注释。

  • 相关阅读:
    docker pull 报错解决办法
    cobbler自动装机!
    centos7 日志定期清理
    【转载】python 模块
    0603 python 基础02
    0527 python 基础01
    0520 python
    160519 如何做自动化测试?
    SourceTree&Git部分名词解释
    sourceTree安装与使用
  • 原文地址:https://www.cnblogs.com/janeysj/p/12698907.html
Copyright © 2011-2022 走看看