1. 前提知识

强制:熟悉Linux各种命令和相关背景知识

建议:了解Maven和Git相关知识

Docker: 使用go语言,与K8/mesos/Machine/Compose/Swarm集群部署,与CI/CD jenkins 集成

2. 为什么会出现

Docker的出现是为了开发与运维之间的矛盾与尴尬。

开发在自己开发环境调试修改好代码,交给运维War包,或者Jar包,可是在运维那十之八九是不会那么顺利的,因为一些配置和环境的不同,导致的不同环境的兼容问题。

解决这个问题的过程往往花费大量的时间和精力。

此时Docker也就出现了,包含代码,配置,数据,运行环境等,把开发人员等运行环境,一摸一样的复制过来。消除了开发人员回答“在我机器上可以工作”的尴尬。

 

 

3.理念

Docker的主要目标“Build,Ship and Run Any App Anywhere”,也就是通过对应用组件的分装,分发,部署,运行等生命周期的管理,使用户使用的app做到“一次封装,到处运行

 

4. Docker是什么

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

 

5. Docker能干什么

  • Web 应用的自动化打包和发布。

  • 自动化测试和持续集成、发布。

  • 在服务型环境中部署和调整数据库或其他的后台应用。

  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

 

6. Docker 包括三个基本概念

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

Docker 面向对象
容器 对象
镜像

 

7. Docker的架构图 

 

 

概念 说明

Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。

Docker 容器(Container)

容器是独立运行的一个或一组应用,是镜像运行时的实体。

Docker 客户端(Client)

Docker 客户端通过命令行或者其他工具使用 Docker SDK (Redirecting…) 与 Docker 的守护进程通信。

Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker Registry

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

Docker Machine

Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

 

9. 虚拟机和docker的区别 

虚拟机就是带环境安装的一种解决方案,它可以在一种操作系统上运行另一种操作系统,比如Window操作系统里可以运行linux操作系统,应用程序对此毫无感知,虚拟机看上去和真实的机器一摸一样,面对底层系统来说,虚拟机就是一个普通文件,不需要就删掉,对其他毫无影响。这类虚拟完美的运行了另一套系统,能够使应用程序,操作系统,和硬件三者之间逻辑不变。

因为虚拟机是虚拟了整个操作系统,包括硬件和网络等等,size非常大。

缺点:资源占有多,冗余步骤多,启动慢。

而Docker不是模拟完整的操作系统,只是需要软件所需要库资源和设置的核心的部分,容器内的应用只是运行于宿主的内核,容器内没有自己的内核,也没有进行硬件虚拟机更快,传统虚拟机启动就需要几分钟,而docker是秒级别的启动。

10.Docker的好处

  • 更快速的应用交付和部署
  • 更便捷的升级和扩缩容
  • 更简单的系统运维
  • 更高效的计算机资源应用

  

11. 业界趋势 

大佬们都在用

 

Logo

一站式 AI 云服务平台

更多推荐