Docker玩腻了,不妨试试用Vagrant

简介: Docker 提供了一个容器化的轻量环境,但是它太轻量,生命周期很短暂。(更多Docker 的内容可以查看我的另外一篇文章)。区别直接总结如下:

Docker基于Go语言开发,使用了LXC(Linux 内核容器虚拟化),cgroup,Linux内核等,直接依靠系统的功能来提供基础设施。


Vagrant基于基础设施自动化工具Chef或者Puppet,或者用户提供脚本,来操纵镜像,构建基础设施。


这个话题有点反向操作,但是Vagrant还是有必要学习使用的!Docker才是现在最流行的基础设施容器化的核心,vagrant跟它相比就是一个“空壳”。


有时候我们需要一个复杂定制化的操作系统环境(比如设置一个集群),那可以怎么做?

方式一:安装一个虚拟机,通过图形化界面,命令行终端来安装。

这种方式不具有重复使用的效果,除了这个虚拟机能够被导出(Export),被别人使用Virtualbox 导入使用。


这就要求对方的虚拟机软件也的一样的,有时候还会有版本兼容问题,镜像也就仅此重用性。


方式二:使用Vagrant,它很好的遵循了Infrastructure-as-Code(基础设施及代码)

把一个虚拟机的构造,从一个脚本创造出来。


这种方式比前者更具备兼容性,因为vagrant把机器构建分为了主机部署+定制脚本执行两个部分。


那么,虚拟机跟Vagrant的区别:


虚拟机软件(VirtualBox,VMWare等等)提供的是用户界面给用户导入基础镜像,加载启动指定操作系统镜像,可以带界面的系统镜像。自行通过手动操作。或者无界面终端敲命令进行后续使用定制等。


Vagrant基于Chef或者Puppet或者用户提供脚本,来操纵镜像,构建基础设施,更重要的是通过配置脚本构建。


这里可以看到,使用后者Vagrant,只要遵循所有环境(服务器)相关的更改都通过provisioner(脚本/Puppet等),那么我们是可以随时再次重做一个一样的操作环境的。


Vagrant::Config.run do |config|
  config.vm.provision :puppet, :manifest_file => "init.pp"
end

好,这里再次概括一下 Vagrant

vagrant是一个用来构建与管理虚拟机的一个工具。


它能自动化虚拟机操作系统的构建,支持多个虚拟机提供载体,可以是VirtualBox,VMware这些我们常用的虚拟机软件;


下图为虚拟机截图,大家可以去试试,这三个虚拟机都是使用Vagrant构建的。


image.png

也能使用AWS作为载体,更多载体信息可以阅读:https://www.vagrantup.com/docs/providers


更多Vagrant 的概念请移步:https://www.vagrantup.com/intro


如下图,Vagrant凌驾在其他虚拟机之上(当前也能操纵AWS亚马逊云)


image.png

了解完概念,我们来看看Vagant这个组件用法:


两个常用命令

启动一个虚拟机:vagrant up


关闭虚拟机 : vagrant halt


(感谢三笠指出,之前记错成stop命令了。一直记得要stop,结果写成这个了)


还有最常用的:vagrant ssh 登录主机。


image.png

本文只做概念阐述,知道Vagrant是什么,就是一个好的开始。

目录
相关文章
|
NoSQL 关系型数据库 MySQL
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(一)
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(一)
222 0
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(一)
|
Linux 网络安全 Docker
Docker - Vagrant & VirtualBox 快速入门
Docker - Vagrant & VirtualBox 快速入门
113 0
|
运维 Shell 持续交付
Docker - Docker & Vagrant 区别与联系(二)
Docker - Docker & Vagrant 区别与联系(二)
110 0
Docker - Docker & Vagrant 区别与联系(二)
|
NoSQL 关系型数据库 MySQL
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(七)
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(七)
134 0
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(七)
|
NoSQL 关系型数据库 MySQL
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(六)
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(六)
189 0
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(六)
|
NoSQL 关系型数据库 MySQL
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(五)
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(五)
113 0
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(五)
|
NoSQL 关系型数据库 MySQL
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(四)
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(四)
247 0
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(四)
|
NoSQL 关系型数据库 MySQL
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(三)
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(三)
145 0
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(三)
|
NoSQL 关系型数据库 MySQL
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(二)
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(二)
179 0
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(二)
|
缓存 运维 NoSQL
Docker - Docker & Vagrant 区别与联系(一)
Docker - Docker & Vagrant 区别与联系(一)
138 0