1. Docker 的简介概述

1. Docker 的简介概述

@
目录

  • [1. Docker 的简介概述](#1. Docker 的简介概述)
  • [2. Docker 的理念:](#2. Docker 的理念:)
  • [3. 容器与虚拟机比较](#3. 容器与虚拟机比较)
  • [4. Docker应用场景](#4. Docker应用场景)
  • [5. 最后:](#5. 最后:)

为什么会有 Docker 出现:

假定你在开发一个项目,你使用的是一台笔记本电脑而且你的开发环境具有特定的配置,其他开发人员身处的配置也各不相同。这个开发的应用依赖于你当前的配置还要依赖于某些配置文件。

我们直到Java程序项目的开发,设计到各种环境 Redis,Java,Spring,MySQL等等配置环境,一旦某个配置的环境稍有一些不一致,可能都会带来一些,错误,导致程序无法运行。当你将这个程序开发完后,交给测试人员去测试的时候,需要让测试人员的环境和你的运行开发的环境一致。如果配置不相同,测试人员那边无法通过运行,而你本机的电脑配置环境可以运行。测试人员就会说你的程序有问题。实际上是你们之间运行环境的不同,导致运行的结果不同。

然后,测试人员将配置和你的开发的配置环境安装配置了一个版本的,程序可以运行了。但是,你这样每个不同的项目,测试人员都要重新安装不同的运行环境,才能运行,我们知道配置环境是一件很麻烦的事情,特别是涉及到分布式微服务就更加复杂了,这样不断的重新安装配置环境,测试人员,的时间都花在了安装运行环境了。

有没有一种方法可以一劳永逸的方式:就是可以将开发人员的配置环境一并(打包)安装过来,这样就可以不用在重新安装配置环境了。有------> Docker容器就可以做到这一点

Docker 容器给出的解决方案是:"系统平滑移植,容器虚拟化技术"

环境配置,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来,开发人员利用 Docker 可以消除协作编码时,在我的机器上可正常工作的问题

之前在服务器配置一个应用的运行环境,要安装各种软件,就拿尚硅谷电商项目的环境来说,Java/RabbitMQ/MySQL/JDBC驱动包等。安装和配置这些东西有多麻烦就不说了,它还不能跨平台。假如我们是在 Windows 上安装的这些环境,到了 Linux 又得重新装。况且就算不跨操作系统,换另一台同样操作系统的服务器,要移植应用也是非常麻烦的。

传统上认为,软件编码开发/测试结束后,所产生出的成果即是程序或是能够编译执行的二进制字节码等(java 为例)。而为了让这些程序可以顺利执行,开发团队也得准备完整的部署文件,让运维团队得以部署应用程序,开发需要清楚的告诉运维部署团队,用的全部部署配置文件+所有软件环境,不过,即便如此,仍然常常发生部署失败的状况 。Docker 的出现使得 Docker 得以打破过去{程序即应用}的观念。通过镜像(images) 将作业系统核心除外,运作应用程序所需要的系统环境,由下而上打包,达到应用程序跨平台间的无缝衔接运行

2. Docker 的理念:

Docker 是基于 Go 语言实现的云原生项目:

Dockers 的主要目标是"Builld","Ship and Run Any App, AngWhere" ,也就是通过对应用的组件的封装,分发,部署,运行等生命周期的管理,使用户的APP(也可以是一个Web应用或数据库应用等等)及其运行环境能够做到"一次镜像,处处运行"。

Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的,将应用打成镜像,通过镜像成为运行在 Docker 容器上面的实例,而 Docker 容器在任何操作系统上都是一致的,这就实现了跨平台,跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。

Docker 是什么:解决了运行环境和配置问题的软件容器 ,方便做持续集成并有助于整体发布的容器虚拟化技术。

3. 容器与虚拟机比较

传统虚拟机:

虚拟机(virtual machine)就是带环境安装的一种解决方案。

它可以在一种操作系统里面运行另一种操作系统,比如在Windows10系统里面运行Linux系统CentOS7。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。这类虚拟机完美的运行了另一套系统,能够使应用程序,操作系统和硬件三者之间的逻辑不变。

容器虚拟化技术: 部署在任何环境中的软件都能始终如一地运行。

容器虚拟化技术 VS 虚拟机:

比较了 Docker 和 传统虚拟化方式的不同之处:

  1. 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用。
  2. 容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟 。因此容器要比传统虚拟机更为轻便。
  3. 每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。

4. Docker应用场景

docker官网:http://www.docker.com

Docker Hub官网: https://hub.docker.com/

5. 最后:

"在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。"