首页 > 其他分享 >docker和虚拟机的区别

docker和虚拟机的区别

时间:2024-04-25 13:45:55浏览次数:33  
标签:容器 操作系统 区别 虚拟机 ECS 镜像 docker

VPS、ECS

img

  • VPS:虚拟专用服务器,可以理解为物理机上多个 Vmware/VirtualBox 虚拟机,但传统 VPS 不支持资源升降级,资源是固定的。
  • ECS:VPS+自主升降级就变成了 ECS。

docker

这里我以一个实际中可能遇到的例子讲解,比如我们有两台服务器,我需要在两台服务器上分别安装 vim 软件,那么步骤如下:

yum -y intstall vim

apt-get install vim

多个 ECS 之间可能底层操作系统不同,那么部署应用就会有各种环境问题,如果能让软件带着操作系统环境一起部署就可以了。

img

操作系统分为用户空间和内核空间,我们可以阉割操作系统只需要用到操作系统的用户空间部分,就可以构建应用所需的环境。我们将应用程序和操作系统的文件系统、依赖库打包成一个类似压缩包的文件,这其实就是基础镜像(basic image)。

如果选择每台机器安装一个虚拟机可以解决,但是这样未免太重了,我们可以只打包软件和系统依赖库和配置,然后利用 Namespace 能力 让它看起来就像独立操作系统一样,然后通过 Cgroups 来限制它能使用的操作系统资源。

img

总的来说就是物理服务器上跑 ECS,ECS 上跑 Docker 容器,多个 Docker 容器共享一个 ECS,ECS 上跑多个 Docker 容器。

dockfile

img

现在有了容器镜像,但是我们可能还需要安装一些依赖,比如 yum -y install gcc 等,我们通过 dockerfile 脚本来完成。它列清楚了从操作系统到应用服务启动需要哪些事情的清单文件。

现在有了基础镜像和 dockerfile,我们就能一步步构建容器镜像,然后利用 docker build 指令,将环境+程序打包为类似压缩包的东西(容器镜像)。

现在将容器镜像传到任意一台服务器上面执行解压缩,我们就能同时拥有运行环境和程序了。

Registry

现在需要将容器镜像传输到多台服务器,我们可以模仿 Github 代码仓库的做法,就是 Registry。

通过 docker push xxx 将镜像推送到镜像仓库,通过 docker pull xxx 将镜像拉取到本地。

docker 和传统虚拟机的区别

img

  • 传统虚拟机底层拥有一个完整的操作系统;
  • docker 底层并没有单独的操作系,而是添加了目标操作系统的文件系统、依赖库、配置文件。通过 NamespaceCgroup 实现视图隔离和资源限制。使得容器看起来像运行在单独的操作系统上一样。

docker-Compose、docker-Swarm

  • docker-Compose:部署多个容器,且对容器的部署顺序有要求。通过一个统一的 yaml 脚本,执行 dockercompose xxx.yaml up 一键启动;
  • docker-Swarm:docker 解决的是一个容器的部署,dockerCompose 解决的是一套服务的部署,dockerSwarm 解决的是一套服务在多个机器集群上服务部署的问题,如果某一台机器出现故障宕机,服务会自动迁移应用另一台机器,使服务具有高可用性。

标签:容器,操作系统,区别,虚拟机,ECS,镜像,docker
From: https://www.cnblogs.com/istitches/p/18157545

相关文章

  • docker的基本命令
    基础命令https://yeasy.gitbook.io/docker_practice/data_management/volume//容器命令1.dockercommand--help查看对应命令的用法2.dockerps-a查看所有docker进程(无论是否在运行)-l最后一次创建的容器3.dockerlogscontainerId查看容器日志4.dockerstar......
  • 【Qt 专栏】QByteArray详解(QByteArray 与 QString的区别)
    本文转自:《Qt编程指南》    作者:奇先生Qt编程指南,Qt新手教程,QtProgrammingGuide本节学习QByteArray的两种用法,第一种作为字符串处理类,类似QString,但QByteArray内部字符编码不确定,所以要慎用。第二种是作为纯的字节数组,里面可以包含多个'\0',经常用于网络数据的......
  • tcp和udp有什么区别-简要
     传输控制协议(TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。UDP为应用程序提供了一种无需建立连接就可以发送封装的IP数据包的方法。区别:连接方面,安全方面,传输效率,连接对象数量。1、连接方面区别TCP面向连接(如打电话要先拨号建立连接)。UDP是无连接的,即发送数......
  • 使用 Docker 自建一款怀旧游戏之 - 超级马里奥
    1)超级马里奥简介《超级马里奥》(SuperMario)是任天堂公司创造的一款经典游戏系列,是世界上最知名、最成功的游戏之一。这个系列由日本设计师宫本茂于1985年创造,最初的游戏名为《超级马里奥兄弟》(SuperMarioBros.),推出后风靡全球。2)在线部署2.1)安装Docker环境#高版本......
  • 详细介绍tcp和udp有什么区别
    tcp和udp的区别有:1、udp是无连接的,tcp是面向连接的;2、udp是不可靠传输,tcp是可靠传输;3、udp是面向报文传输,tcp是面向字节流传输。  UDPUDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的......
  • docker - [10] 容器数据卷
    将应用和环境打包成一个镜像,然后发布启动就成为一个容器了。 一、什么是容器数据卷  容器数据卷(ContainerDataVolumes)是Docker管理的一种特殊类型的存储区域,它为容器提供了一种持久化数据、共享数据以及与宿主机或其他容器之间进行数据交互的有效方式。  如果数据都......
  • 前端面试题 - 在HTML5中DOCTYPE的作用是什么?标准与兼容模式(混杂模式)各有什么区别?
    #前端面试题-在HTML5中DOCTYPE的作用是什么?标准与兼容模式(混杂模式)各有什么区别?DOCTYPE(文档类型声明)是一种在HTML文档中使用的标记,用于告诉浏览器使用哪个HTML版本解析文档。它的作用是确保浏览器正确地渲染和显示网页内容。标准模式(严格模式)和兼容模式(混杂模式)是浏览器根......
  • 从零开始写 Docker(十二)---实现 mydocker stop 停止容器
    本文为从零开始写Docker系列第十二篇,实现类似dockerstop的功能,使得我们能够停止指定容器。完整代码见:https://github.com/lixd/mydocker欢迎Star推荐阅读以下文章对docker基本实现有一个大致认识:核心原理:深入理解Docker核心原理:Namespace、Cgroups和Rootfs......
  • docker配置Nvidia环境,使用GPU
    前言需要nvdiadriver安装好,请参考UbuntuNvidiadriver驱动安装及卸载docker安装配置apt阿里云的镜像源sudocurl-fsSLhttps://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg|sudoapt-keyadd-sudoadd-apt-repository"deb[arch=amd64]http://mirrors.aliy......
  • docker - [09] 镜像详解
    题记部分  一、镜像是什么  镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,还包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。如果得到镜像:1、从远程仓库下载2、朋友拷贝给你3、自己制作一个镜像Do......