Docker(一):Docker简介及安装

1 Docker简介

在了解docker之前,先介绍几个常用的官方网站:
docker官网:https://docs.docker.com/
Docker的github地址:https://github.com/moby/moby

Dockerhub官网
https://registry-1.docker.io

如果docker官方registry拉取镜像速度很慢,可以尝试daocloud提供的加速器服务
https://dashboard.daocloud.io/mirror

1.1 容器跟虚拟机的区别

1、虚拟机是什么

虚拟机(Virtual Machines,简称VMs),虚拟机是一种模拟计算机系统的软件实现,它可以在物理服务器上模拟出多个独立的计算机环境。每个虚拟机都运行着完整的操作系统(如Windows、Linux等),并且可以运行任何为该操作系统设计的应用程序。
理解虚拟机的关键在于:

  • 虚拟机提供了与物理机相似的计算环境,但它是虚拟的。
  • 每个虚拟机都是独立的,拥有自己的操作系统、CPU、内存、存储和网络接口。
  • 虚拟机之间是完全隔离的,一个虚拟机的任何操作都不会影响到其他虚拟机。
  • 虚拟机提供了强大的灵活性和安全性,但相比容器,它们的启动和运行需要更多的时间和资源。

2、容器是什么

容器(Container)是一种轻量级的虚拟化技术,它允许在单个操作系统实例上运行多个隔离的应用程序。与虚拟机不同,容器共享宿主操作系统的内核,但拥有自己的文件系统、进程空间和网络接口。
理解容器的关键在于:

  • 容器是轻量级的,因为它们不需要完整的操作系统,启动速度快,资源占用少。
  • 容器提供了应用级别的隔离,而不是操作系统级别的隔离。
  • 容器镜像包含了运行应用所需的所有依赖和配置,使得部署和复制变得快速和一致。
  • 容器适合于微服务架构和快速迭代的开发环境,但它们通常不提供虚拟机那样的完全隔离。

可以将虚拟机想象成完整的房子,每个虚拟机都有自己的墙壁、地板、家具(操作系统和应用程序)等,它们是独立的,互不影响。而容器则像是公寓楼中的不同公寓,它们共享同一栋楼的基础结构(操作系统内核),但每个公寓内部有自己的房间布局(文件系统和应用程序)。
在实际应用中,选择虚拟机还是容器取决于自己的需求。如果需要运行不同操作系统的应用,或者需要完全的隔离和安全保障,虚拟机可能是更好的选择。如果追求快速部署、资源高效和易于管理,容器可能更适合。

3、容器和虚拟机的区别

容器(Containers)和虚拟机(Virtual Machines,简称VMs)都是现代计算环境中常用的技术,它们提供了在单个物理服务器上运行多个应用或服务的能力。尽管它们的目标相似,但它们在实现方式、性能和使用场景上有着显著的区别。

容器(Containers):

  • 1.轻量级:容器直接运行在宿主操作系统上,共享宿主的内核,因此启动速度快,资源占用小。
  • 2.隔离性:容器提供了应用级别的隔离,每个容器都有自己的文件系统、进程空间和网络接口,但它们之间是相互独立的。
  • 3.快速部署:由于容器镜像包含了运行应用所需的所有依赖和配置,因此可以快速地部署和复制容器环境。
  • 4.资源占用:容器通常比虚拟机更节省资源,因为它们不需要额外的操作系统和虚拟硬件。
  • 5.可移植性:容器的可移植性较好,可以在不同的平台和环境中保持一致性。
  • 6.性能:容器的性能接近原生应用,因为它们直接运行在宿主机的硬件上,没有虚拟化层的开销。

虚拟机(Virtual Machines):

  • 1.完全隔离::虚拟机提供了操作系统级别的隔离,每个虚拟机都有自己的操作系统、应用程序和虚拟硬件。
  • 2.安全性:虚拟机提供了更强的安全性,因为它们之间的隔离更加彻底,即使一个虚拟机出现问题,也不会影响到其他虚拟机。
  • 3.资源分配:虚拟机可以分配独立的资源(CPU、内存、存储等),并且资源分配更加灵活。
  • 4.启动时间:虚拟机的启动和运行速度通常比容器慢,因为它们需要加载完整的操作系统。
  • 5.兼容性:虚拟机可以运行不同的操作系统,包括与宿主机不同的操作系统。
  • 6.性能开销:虚拟机由于虚拟化层的存在,通常会有更高的性能开销。

容器和虚拟机各有优势和适用场景。容器适合于微服务架构、持续集成/持续部署(CI/CD)和快速扩展的应用场景,而虚拟机则更适合于需要完全隔离环境、运行不同操作系统或需要更多资源控制的场景。选择哪种技术取决于具体的应用需求、性能要求和安全考虑。

1.2 为什么要学习容器

在传统的生产环境中,一个Java 代码,需要编译打包,会打包成 war包或者jar包,然后安装环境并启动成功,就可以对外提供服务了(能正常访问页面,做操作)
没有用容器之前通常会出现如下问题:

  • 1.开发环境没问题,测试环境报错---->排查后发现是启动脚本里jdk版本跟代码要求的版本不匹配
  • 2.测试环境没问题,生产环境报错 -->排查发现是tomcat版本和jdk版本不匹配。

在实际中,开发、运维、测试的环境各负责人不同,有可能服务在开发环境正常运行,但是在测试环境就不行。排查之后发现是环境的问题,如:jdk版本和实际代码中的版本不一致。

如果使用容器,会把 应用程序、所需的环境、相关依赖等整体进行打包成一个镜像。这个打出来的包叫做镜像。 镜像运行时叫做容器。使用镜像可以很方便的做迁移,备份,存储,交付。

打包之后的镜像有这样的特点:

  • 1.环境的强一致性。docker镜像提供了除内核外完成的运行时环境,保证其他使用人员,能完整复现应用运行时环境。不会出现“环境不一致导致报错“这种情况。
  • 2.迁移方便,持续交付和部署。一次打包,到处运行。

1.3 Docker 是什么

Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在GitHub 上进行维护。

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何支持docker的机器上运行。容器是完全使用沙箱机制,相互之间不会有任何接口调用。
Docker logo:
在这里插入图片描述

Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被装在集装箱里,集装箱和集装箱之间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值