Docker - Docker & Vagrant 区别与联系(二)

简介: Docker - Docker & Vagrant 区别与联系(二)

本质区别

Vagrant并不提供虚拟化技术,本质上是一个虚拟机外挂,通过虚拟机的管理接口来管理虚拟机,让用户更轻松的进行一些常用配置,比如:CPU/Memory/IP/DISK等分配。并且提供了一些其它的管理操作:比如开机运行指定命令,镜像二次打包,插件编写等等。

Vagrant官方有介绍

To achieve its magic, Vagrant stands on the shoulders of giants. Machines are provisioned on top of VirtualBox, VMware, AWS, or any other provider. Then, industry-standard provisioning tools such as shell scripts, Chef, or Puppet, can be used to automatically install and configure software on the machine.

docker是一个容器引擎,每一个实例是一个相对隔离的空间,与宿主机共享操作系统内核,并且共享宿主机资源。相对于披着虚拟机皮的vagrant,docker更加轻量,消耗更少的资源。

贴一张docker官方介绍图

image.png

关于虚拟机和docker的区别这边文章有更形象的解释:一篇不一样的docker原理解析 - uncle creepy的文章 - 知乎专栏

应用场景

关于应用场景没有绝对,把两个东西都用熟,自己觉得用哪个方便用哪个好管理就用哪个。

vagrant

既然vagrant本质是虚拟机外挂,那么它的应用场景就是,节省你用原生虚拟机管理软件的时间。

原来我们新增一台虚拟机需要配置好内存、硬盘、CPU等,然后添加iso,安装。创建用户,等等。一套下来好几十分钟是吧?聪明点你可能会想到复制一个创建好的镜像然后粘贴。

但这一切vagrant都帮你想好了

安装vagrant后你只需要6步就能创建一台新的虚拟机,其中两步是创建文件夹和切换文件夹

$ mkdir vagrant_getting_started
$ cd vagrant_getting_started
$ vagrant box add hashicorp/precise32
$ vi Vagrantfile
#添加配置

image.png

$ vagrant init

从安装到创建一台新的虚拟机就成功了。如果你想要再添加一台虚拟机,你只需要执行最后两步,添加一个不同名字的配置就能再新建一台虚拟机。还支持镜像、开机自动运行脚本、插件编写等。

docker

docker主要应用于解决环境依赖以及为应用程序提供一个相对隔离的空间,一个实例像操作系统里运行的一个程序。

原来部署一套环境是不是得自己编写自动化部署依赖环境以及程序的脚本?如果有两个依赖同一程序或库的不同版本怎么办?绝对路径?软连接?

docker能很好的解决你的烦恼。把需要的依赖环境打包成一个镜像,再把程序放镜像里面运行。

总的来说

  • vagrant更适合给开发大爷们创造一个统一的开发、测试、接近于完全隔离的环境,以及提高对高配机的闲置利用。
  • docker更方便地解决了同一机器上的环境隔离,以及提高运维锅们解决部署时环境依赖的效率。
目录
相关文章
|
Kubernetes 调度 虚拟化
Kubernetes和Docker有什么区别
【10月更文挑战第18天】Kubernetes和Docker有什么区别
|
10月前
|
存储 Kubernetes C++
Docker、containerd、CRI-O 和 runc 之间的区别
通过理解这些组件的角色和功能,可以更好地选择和配置容器环境,以满足特定的需求和应用场景。
646 25
|
12月前
|
存储 Kubernetes Docker
Kubernetes(k8s)和Docker Compose本质区别
理解它们的区别和各自的优势,有助于选择合适的工具来满足特定的项目需求。
1278 19
|
11月前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
2682 11
|
安全 Linux 虚拟化
LXD如何使用,跟Docker的区别都有什么?优点和缺点都有什么?
【10月更文挑战第28天】LXD如何使用,跟Docker的区别都有什么?优点和缺点都有什么?
1927 1
|
搜索推荐 应用服务中间件 nginx
docker与containerd镜像获取及导出导入的区别与注意事项(报错信息:ctr: content digest sha256........ac47: not found)
docker与containerd镜像获取及导出导入的区别与注意事项(报错信息:ctr: content digest sha256........ac47: not found)
968 2
|
存储 安全 Ubuntu
Docker 镜像与 Docker 容器的区别
【8月更文挑战第27天】
1170 5
|
缓存 Docker 容器
在Docker中,docker add copy有什么区别?
在Docker中,docker add copy有什么区别?
|
JSON Shell 数据格式
在Docker中,docker run cmd entrypoint 有什么区别?
在Docker中,docker run cmd entrypoint 有什么区别?