zoukankan      html  css  js  c++  java
  • DokcerFile的添加及如何生成一个自定义镜像mycentos(四)

      最近在学习Docker,用commit去生成一个镜像,但是生成后的镜像非常臃肿,所以去学习了一下DockerFile。

    前提条件:

      已在虚拟机中成功安装Docker

    简单的理解可以如下图所示:

      DockerFile文件:类似原材料

      Docker镜像:组装原材料后,形成交付品

      Docker容器:运行状态

    1、什么叫DockerFile

      DockerFile:就是一系列脚本,用命令和参数构成的,主要作用就是用来构建Docker镜像的文件。

    2、怎么去写DockerFile(DockerFile文件编写的步骤)

      怎么去写DockerFile,也就是DockerFile文件形成的步骤,主要有3个步骤:编写DockerFile文件、Docker build执行获取镜像、Docker run运行生成容器,最后可以通过Docker history去查看历史执行镜像。

    Dockerfile的大致执行流程:

      2.1 docker从基础镜像运行一个容器(在虚拟机中,在hub官网上拉一个centos)

      2.2 执行指令并对容器做出修改

      2.3 执行类似docker commit的操作提交一个新的镜像层

      2.4 Docker在基于刚提交的镜像运行一个新容器

      2.5 执行dockerfile中的下一条指令直到所有指令都执行完成

    DockerFile文件执行步骤命令:

    1 编写Dockerfile文件
    2 构建docker image:Docker build -t 新镜像名:TAG . //注意最后一个点与TAG之间有个空格
    3 运行docker 生成容器:docker run -it 新镜像ID //通过docker images找到镜像ID
    4 列出镜像的变更历史:docker history 新镜像ID
    DockerFile文件执行步骤命令

      3、DockerFile的文件解析

    打开官网 https://hub.docker.com/  ,在官网上搜索centos,随意点开一个,查看DockFile。

    如下图,Dockerfile文件解析:

      3.1 保留字全部大写+参数 //保留字有FROM、MAINTAINER、COPY、ADD、RUN、ONBUILD、WORKDIR、USER、CMD、ENV、EXPOSE、VOLUME、ENTRYPOINT等待。

      3.2 从上到下,顺序执行

      3.3 #表注释

      3.4 每条指令都会创建一个 新的镜像层,并对镜像进行提交

     

     4、实战-定制需求生成一个自定义镜像

    Base镜像(scratch):docker hub中的镜像都是通过在base镜像中安装;自定义镜像中安装和配置需要的软件构建出来的。

    4.1 自定义镜像需求为:目前从官网上pull下来的centos都是精简版,不支持vim,不支持ifconfig,所以自定义的镜像mycentos满足如下3个条件

      a 登陆后默认路径修改为:/usr/local (未修改前在根目录下/)

      b 可以使用vim 编辑器

      c 可以查看网络配置ifconfig支持

    4.2 打开虚拟机centos7终端,执行docker images出现错误:【Failed to restart dock.service: Unit not found.】,执行如下代码:

    1 systemctl unmask docker.service
    2 systemctl unmask docker.socket
    3 systemctl start docker.service
    开始Docker服务

    4.3 在虚拟机centos中,打开终端,首先创建目录文件Dockerfile/DockerFile文件并且配置Dockerfile文件,代码如下:

    1 cd /
    2 mkdir /mydocker/
    3 touch Dockerfile.txt
    4 vi Dockerfile.txt
    根目录下创建Dockerfile.txt,且进入到当前文件

    打开对应的Dockerfile.txt文件后,编写定义需求,代码如下:

    1 From centos
    2 ENV mypath /usr/local   //配置环境变量,默认路径变更为:/usr/local,以前是根目录
    3 WORKDIR $mypath
    4 RUN yum -y install vim   //安装vim
    5 RUN yum -y install net-tools  //安装net-tools
    6 EXPOSE 80
    7 CMD /bin/bash
    自定义Dockerfile配置文件

    4.4 构建dockerfile文件生成镜像,代码如下:

     

    docker build -f /mydocker/Dockerfile.txt -t mycentos:1.3 .
    构建dockerfile文件生成镜像

     4.5 生成镜像后,运行生成容器,代码如下:

    docker run -it mycentos:1.3
    生成镜像后,运行生成容器

     4.6 查看镜像的历史记录,代码如下:

    1 docker images   //找到对应的image id(镜像ID)
    2 docker history a5688da747d7  //查看docker历史记录
    查看docker image的历史记录

     

     

  • 相关阅读:
    ffplay(2.0.1)中的音视频同步
    (转)ffplay的音视频同步分析之视频同步到音频
    (转) 从ffmpeg中提取出YUV数据
    关于解决用tutorial7教程中的代码打造一款自己的播放器中的声音噪音问题
    基于<最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)>的一些个人总结
    (转)SDL2.0在mfc窗口中显示yuv的一种方法
    (转)SDL1.2到2.0的迁移指南
    APM (应用性能管理)
    在telnet下操作memcache详解(操作命令详解)
    MYSQL主从数据库搭建
  • 原文地址:https://www.cnblogs.com/wendyw/p/9728381.html
Copyright © 2011-2022 走看看