我,【Docker】,一款平息开发与运维战争的软件容器

文章目录

  • Docker简介
  • Docker安装
      • 前提:
      • 三要素
      • 安装步骤
      • 阿里云镜像加速器配置
      • 测试运行HelloWorld镜像
  • Docker 常用命令
      • 帮助命令
      • 镜像命令
      • 容器命令
  • Docker镜像
  • Docker容器数据卷
  • DockerFile解析

  • Docker简介

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
    Docker的理念便是在任何地方构建、发布并运行任何应用,做到一次封装,到处运行
    我,【Docker】,一款平息开发与运维战争的软件容器_第1张图片

    • 与传统虚拟机的对比
      传统虚拟机:资源占用多、冗余步骤多、启动慢
      Docker:容器内的应用进程直接运行于宿主内核,更轻便、每个容器互相隔离,不会互相影响,区分计算资源
  • Docker安装

    • 前提:

      Docker 运行在CentOS7上,要求系统为64位,系统内核版本为3.10以上
      Docker 运行在CentOS6.5或更高版本的CentOS上,要求系统为64位、系统内核版本为2.6.32-431或者更高版本

      在这里插入图片描述

    • 三要素

      • 镜像:image文件生成的容器实例,本身也是一个文件,称为镜像文件
      • 容器:一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器
      • 仓库:就是存放了一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候从仓库拉下来就可以了
    • 安装步骤

      • CentOS6
        • CentOS 6.7 安装Docker
        • Docker安装遇到No package docker-io available解决办法
      • CentOS7
        https://blog.csdn.net/u014069688/article/details/100532774
    • 阿里云镜像加速器配置

      • 注册并登录阿里云,获取个人专属加速器地址我,【Docker】,一款平息开发与运维战争的软件容器_第2张图片
      • 配置本机Docker运行镜像加速器
        • 修改配置文件
          • CentOS6的配置文件:/etc/sysconfig/docker
          • CentOS7的配置文件:/etc/docker/daemon.json
            在这里插入图片描述
            重启docke.service即可
    • 测试运行HelloWorld镜像

      我,【Docker】,一款平息开发与运维战争的软件容器_第3张图片

      • run运行流程我,【Docker】,一款平息开发与运维战争的软件容器_第4张图片
  • Docker 常用命令

    • 帮助命令

      我,【Docker】,一款平息开发与运维战争的软件容器_第5张图片
    • 镜像命令

      我,【Docker】,一款平息开发与运维战争的软件容器_第6张图片
    • 容器命令

      我,【Docker】,一款平息开发与运维战争的软件容器_第7张图片
  • Docker镜像

    • 是什么?
      镜像是一种轻量级、可执行的独立软件包,用来打包运行环境和基于运行环境开发的软件,它包含某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件
    • 基础:UnionFS(联合文件系统
      特性:一次同时加载多个文件系统,但从外面看来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终文件系统就会包含所有底层的文件和目录
    • 镜像运行原理
    • 特点:
      docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”
    • 镜像commit
      • docker commit提交容器副本使之成为一个新的镜像
      • docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:【标签名】
      • 案例:
        • 初次启动tomcat无法访问404:https://blog.csdn.net/qq_40891009/article/details/103898876
        • docker run -it -p 8888:8080 tomcat: 启动tomcat容器
          我,【Docker】,一款平息开发与运维战争的软件容器_第8张图片我,【Docker】,一款平息开发与运维战争的软件容器_第9张图片
        • 提交commit
          我,【Docker】,一款平息开发与运维战争的软件容器_第10张图片
  • Docker容器数据卷

    • 是什么
      Docker容器产生的数据,如果不通过commit生成新的镜像,使得数据作为镜像一部分保存下来,那么当容器删除后,数据自然也就没有了。为了能保存数据在docker中我们使用卷

    • 能干嘛
      容器的持久化
      容器间继承+共享数据

    • 数据卷

      • 容器内添加
        我,【Docker】,一款平息开发与运维战争的软件容器_第11张图片
        我,【Docker】,一款平息开发与运维战争的软件容器_第12张图片
      • 容器内数据共享
        我,【Docker】,一款平息开发与运维战争的软件容器_第13张图片 我,【Docker】,一款平息开发与运维战争的软件容器_第14张图片
        细节:容器停止后,主机修改后数据依然同步
      • DockerFile添加
        • 根目录下新建mydocker文件夹并进入
          我,【Docker】,一款平息开发与运维战争的软件容器_第15张图片
        • File构建
          我,【Docker】,一款平息开发与运维战争的软件容器_第16张图片
        • build后生成镜像
          我,【Docker】,一款平息开发与运维战争的软件容器_第17张图片
        • run容器
          我,【Docker】,一款平息开发与运维战争的软件容器_第18张图片
        • 主机对应默认地址(inspect命令)
          我,【Docker】,一款平息开发与运维战争的软件容器_第19张图片
    • 数据卷容器

      • 定义:命名的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器
      • 容器间传递共享(–volumes-from)
        我,【Docker】,一款平息开发与运维战争的软件容器_第20张图片
        在这里插入图片描述
        我,【Docker】,一款平息开发与运维战争的软件容器_第21张图片
        在这里插入图片描述
        我,【Docker】,一款平息开发与运维战争的软件容器_第22张图片
        在这里插入图片描述
        细节:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它止
  • DockerFile解析

    • 是什么?
      • DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本
      • 构建三步骤
      1. 编写DockerFile文件
      2. docker build
      3. docker run
    • DockerFile构建过程解析
      • DockerFile内容基础知识
      1. 每条保留字指令都必须为大写字母且后面要跟随至少一个参数
      2. 指令按照从上到下,顺序执行
      3. #表示注释
      4. 每条指令都会创建一个新的镜像层,并对镜像进行提交
      • Docker执行DockerFile的大致流程
      1. docker从基础镜像运行一个容器
      2. 执行一条指令对容器作出修改
      3. 执行类似docker commit的操作提交一个新的镜像层
      4. docker再基于刚提交的镜像运行一个容器
      5. 执行dockerfile中的下一条指令直到所有指令都执行完成
      • 总结
        • DockerFile是软件的原材料
        • Docker镜像是软件的交付品
        • Docker容器则可以认为是软件的运行态
        • DockerFile面向开发,Docker镜像成为交付标椎,Docker容器则涉及部署和运维
          我,【Docker】,一款平息开发与运维战争的软件容器_第23张图片
    • DockerFile体系结构
      我,【Docker】,一款平息开发与运维战争的软件容器_第24张图片
      我,【Docker】,一款平息开发与运维战争的软件容器_第25张图片

你可能感兴趣的:(Java)