Docker容器

一、概述

1.案例

远洋运输案例:生活案例

  1. 需求:远洋运输以下商品,要求保证产品安全同时要高效完成运输
    Docker容器
  2. 西瓜问题:
    汽车放在了西瓜上,钢筋放在了玻璃杯上,汽车放在了钢琴上,是有放在了服务器上…
  3. 运输方案:
    将汽车,香蕉,钢琴,玻璃杯等产品装入集装箱,然后将集装箱装运到港口码头,将集装箱状图货运船只完成运输。
    Docker容器Docker容器

服务开发运行案例:实际工作案例

  1. 需求:在服务器上完成一个普通的web项目的部署,该项目同时使用到了缓存和数据库;后期服务会有扩展可能。
    Docker容器
  2. 西瓜问题:
    部署web服务需要安装jdk,tomcat/jetty等服务,如果忘记将导致服务无法启动…
  3. 原始化部署方案:
    1).单机部署方案
    Docker容器
    2).集群化部署
    Docker容器3). 其他问题:
    A.服务安装问题:安装jdk,tomcat,nginx,redis,mysql等服务繁琐且容易出错,案例
    B.资源占用问题:硬件资源浪费
    C.服务扩展问题:服务集群化扩展困难,风险高。
  4. Docker部署方案
    1).单应用版部署方案
    Docker容器

2).集群部署方案:
Docker容器
3).docker对问题的解决
A.服务安装问题:容器初始化安全,简单,快捷。案例
B.资源占用问题:可以充分利用硬件资源,避免硬件资源浪费
C.服务扩展问题:服务集群化扩展简单,风险低。

2.容器

什么是容器:

Docker容器

  1. 容器定义:
    容器是一种轻量级、可移植、自包含的软件打包技术;是应用程序可以在几乎任何地方以相同的方式运行。开发人员创建并测试好的容器,无需任何修改就可以在生产环境的系统(物理机、虚拟机、云主机)上运行。
  2. 容器特性
    A. 打包技术:可以将任何软件和依赖打包进一个容器中。
    B. 可移植:不需要修改就可以在所有平台上使用(前提是目标及其安装了docker engine)
    C. 高效化:能够快速启动和迁移
    D. 隔离性:资源、网络、库等都是隔离的,不会出现依赖问题。
    E. 方便管理:提供了针对容器的run、start、stop等标准化操作,方便自动话和管理。
    F. 分工明确:开发只注重业务开发,运维只注重基础的环境管理。

为什么使用容器

  1. 开发人员
    创建一次运行环境,打包成容器(镜像)后就可以在任何地方运行了。
  2. 运维人员
    只要配置好标准的running(部署了docker engine)环境,就可以运行开发人员开发的任何容器;这对运维人员来说工作变得一致,可重复,同时也意味着高效。

容器工作方式

  1. 参与容器工作的元素
    Docker客户端:Docker Client
    Docker服务器:Docker daemon
    镜像文件仓库:Registry
    Docker镜像:Image
    Docker容器:Container
  2. 各个元素之间的关系
    镜像仓库负责保存开发人员打包好的镜像(image);
    容器是根据镜像创建而来;
    运维人员通过Docker Client发送命令给Docker Daemon来从镜像仓库中下载镜像,然后根据镜像创建和管理Docker container。
  3. Docker架构图
    Docker容器

容器部署部署架构

  1. 部署架构
    Docker容器
  2. 容器部署架构和虚拟机部署架构区别
    A. 硬件资源充分利用;
    B. 轻量化,快速启动和迁移
    Docker容器

二、镜像

镜像内部结构

镜像构建

镜像分发

三、容器

创建运行容器

容器操作:
启动、停止、和重启、pause、unpause、删除容器
容器状态

容器资源限制:
内存、CPU、IO

容器底层技术:cgroup和namespace

四、网络

单机:
网络类型:
none、host、bridge、user-defined

容器间通信:
IP通道、Docker DNS Server、joined容器

容器与外部通信:
容器访问外部,外部访问容器;

五、Docker存储

Data Volume
Data Volume 生命周期管理

其他:
stroage driver、数据共享、Volume container、Data-packed volume container

六、多主机管理

多主机安装、管理

多机网络:
overlay
libnetwork & CNM、macvlan、fiannel、weave、calico、
各种网络比较

七、容器监控

Docder自带监控
prometheus监控,
其他监控

八、日志管理