Docker学习笔记(持续更新)

Docker学习目录

  • 1.基础
    • 1.1 Docker简介
      • 1.1.1 Why Docker?
      • 1.1.2 Docker理念
      • 1.1.3 容器与虚拟机
      • 1.1.4 Docker能做什么?
    • 1.2 Docker的基本组成
      • 1.2.1 Docker的三要素
      • 1.2.2 Docker平台架构

1.基础

1.1 Docker简介

1.1.1 Why Docker?

  • 在个人笔记本电脑中进行开发,依赖于个人独特的开发环境,但当别人需要在其他环境中跑程序时,往往会遇到环境配置问题。为了解决环境问题而不产生重新创建服务器的开销,答案就是使用容器。Docker之所以发展迅速,缘于给予了一个标准化解决方案—系统平滑移植,容器虚拟化技术。
  • 如果软件自带安装环境,即将原始环境原封不动的复制过来,则可方便解决“跑不起来”的问题。Docker透过镜像images将运行应用程序所需要的系统环境除系统核心意外由下而上打包,达到应用程序跨平台的无缝衔接。

1.1.2 Docker理念

  • Docker是基于Go语言实现的云开源项目。是解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
  • Build->Ship->Run Any App&Anywhere,一次镜像处处运行。将应用打成镜像,通过镜像成为运行在Docker容器上的实例,而Docker在任何操作系统上都是一致的,即实现了跨平台、跨服务器运行。

1.1.3 容器与虚拟机

  • 虚拟机:资源占用多、冗余步骤多、启动慢
  • 由于虚拟机存在上述缺点,Linux发展出了另一种虚拟化技术:Linux容器,它是与系统其他部分隔离开的一系列进程。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可以执性和一致性。
  • Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要绑定一整套操作系统,只需要软件工作所需的库资源和设置,容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。
  • Docker容器是在操作系统层面上实现的虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化,与传统的虚拟机相比,Docker优势体现为占用体积小,启动速度快。
  • 每个容器之间相互隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。

1.1.4 Docker能做什么?

  1. 更快速的应用交付和部署:只需交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好了,大大节省部署和测试验证的时间。
  2. 更便捷的升级和扩缩容:随着微服务架构和Docker的发展,应用的开发将变成搭积木一样,应用的升级将变得非常容易。当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容。
  3. 更简单的系统运维:生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。
  4. 更高效的计算资源利用:Docker是内核级虚拟化,不像传统虚拟化技术一样需要额外的Hypervisor支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的CPU和内存利用率。

1.2 Docker的基本组成

1.2.1 Docker的三要素

  1. 镜像
    镜像就是一个只读的模板。镜像类似于Java中的类,容器类似于Java中new出来的实例对象。
  2. 容器
    容器类似于一个虚拟化的运行环境,应用程序或服务运行在容器里。
    从面向对象角度可以把容器看作镜像创建的运行实例。静态是静态的定义,容器是镜像运行时的实体。每个容器都是相互隔离的保证安全的平台。
    Redis r1 = docker run镜像。
    从镜像容器角度可以把容器看作是一个简易版的Linux环境。包括root用户权限、进程空间、用户空间、网络空间和运行在其中的应用程序。
  3. 仓库
    是集中存放镜像文件的场所。Maven仓库存放jar包,github存放git项目,Docker Hub存放各种镜像。

1.2.2 Docker平台架构

Docker是一C/S结构,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器,是一个运行时环境。
实践过再回来补充再理解

你可能感兴趣的:(Docker,运维,容器,服务器,Linux)