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更方便地解决了同一机器上的环境隔离,以及提高运维锅们解决部署时环境依赖的效率。
目录
相关文章
|
10天前
|
Kubernetes 调度 虚拟化
Kubernetes和Docker有什么区别
【10月更文挑战第18天】Kubernetes和Docker有什么区别
|
1月前
|
搜索推荐 应用服务中间件 nginx
docker与containerd镜像获取及导出导入的区别与注意事项(报错信息:ctr: content digest sha256........ac47: not found)
docker与containerd镜像获取及导出导入的区别与注意事项(报错信息:ctr: content digest sha256........ac47: not found)
|
3月前
|
存储 安全 Ubuntu
Docker 镜像与 Docker 容器的区别
【8月更文挑战第27天】
246 5
|
3月前
|
缓存 Docker 容器
在Docker中,docker add copy有什么区别?
在Docker中,docker add copy有什么区别?
|
3月前
|
JSON Shell 数据格式
在Docker中,docker run cmd entrypoint 有什么区别?
在Docker中,docker run cmd entrypoint 有什么区别?
|
3月前
|
Ubuntu 开发者 Docker
在Docker中,stage和step有什么区别?
在Docker中,stage和step有什么区别?
|
3月前
|
缓存 Docker 容器
在Docker中,docker commit生成的镜像和dockerfile生成镜像有什么区别?
在Docker中,docker commit生成的镜像和dockerfile生成镜像有什么区别?
|
3月前
|
Docker 容器
Docker export 和 save 区别
【8月更文挑战第3天】`docker export` 与 `docker save` 的关键区别在于处理对象和用途。`export` 将容器转为 `.tar` 文件,仅导出容器文件系统,不含元数据,适合快速备份或测试;`save` 则打包整个镜像及其元数据为 `.tar` 文件,用于镜像迁移或离线备份。前者通过 `import` 创建新镜像但无元数据,后者用 `load` 恢复完整镜像。
310 1
|
3月前
|
Kubernetes 网络协议 Docker
在K8S中,ip-cer-pod与docker原生端口映射有何区别?
在K8S中,ip-cer-pod与docker原生端口映射有何区别?
|
3月前
|
Linux KVM 虚拟化
在Linux中,KVM和Docker在Linux虚拟化中的区别是什么?
在Linux中,KVM和Docker在Linux虚拟化中的区别是什么?