Vagrant 虚拟机搭建、与Docker容器的区别

一、Vagrant安装

Vagrant Box 文件获取
  • 官方: https://atlas.hashicorp.com/boxes/search
  • 内网: \\192.168.8.220\Software\virtualization\vagrant\box (局域网共享)
指令平台
  • Mac 中建议使用自带的终端运行命令
  • Windows 中建议使用cygwin软件.下载地址https://cygwin.com/install.html.在cygwin安装过程选择包的时候需要选择 openssh
Vagrant Box 文件添加
vagrant box add [名称] [box文件路径] vagrant box delete [名称] 例: vagrant box add centos6.7 /tmp/vagrant-centos-6.7.box # box文件路径根据需要自行根据情况设定
Vagrant 虚拟机创建
mkdir /tmp/centos # 在tmp文件夹下创建centos文件夹 cd /tmp/centos vagrant init centos6.7
  1. 创建文件夹用于存放虚拟机
  2. 进入到创建的文件夹
  3. 初始化虚拟机,同时设置虚拟机引用的box.
Box引用方式有两种
    • 引用本地已经添加的box, 例如vagrant init centos6.7, centos6.7 为已经添加的box文件
    • 引用官网上面的box, 例如vagrant init ubuntu/trusty64, ubuntu/trusty64 为官网上面的box,如果引用的话需要下载,比较慢,建议先下载到本地,然后box文件添加再使用
编辑自动生成Vagrantfile
# 删除掉前面的#号 config.vm.network “private_network”, ip: “192.168.33.10”
# 为虚拟机配置一个只有host物理机能够通信的ip地址
Vagrant 虚拟机启动
vagrant up
启动过程比较缓慢,稍等.
Vagrant 其他常用命令
# 虚拟机登陆 vagrant ssh 等同于 ssh vagrant@127.0.0.1 -p2222
# 虚拟机关机 vagrant halt # 虚拟机销毁 vagrant destroy
# 虚拟机重载配置文件,即 Vagrantfile vagrant reload
# 虚拟机创建快照 vagrant snapshot save [快照名称]
# 虚拟机快照查看 vagrant snapshot list
# 虚拟机快照恢复 vagrant snapshot restore [快照名称]
# 命令查看 vagrant help

二、vagrant基本命令使用

vagrant up 启动虚拟机
vagrant halt 关闭虚拟机
vagrant box list 列出虚拟机列表

登入vagrant虚拟机里面命令:
①进入到对应的虚拟机包里面,cd vagrant/dev_box
②登录虚拟机账号:vagrant ssh
③切换到root用户:sudo su

④配置Item和o-my-zsh一起使用 export ZSH=/Users/iac/.oh-my-zsh

vi ~/.zshrc 修改Git命令缩写的配置文件

一般环境变量是在/etc/profile和【~/.bashrc】里面,但是安装了omyzsh后只需要修改【~/.zshrc】、bash配置文件编辑 vi ~/.zshrc ;编辑后重载命令:source ~/.zshrc

如果装了node的情况就要把node的版本路径export到zshrc配置文件里面

node版本管理 n插件 和 fis3 的安装 https://www.cnblogs.com/dearxinli/p/5443059.html (一般使用淘宝镜像安装,国内速度快)

三、vagrant安装PHP7.3+FPM

MAC 终端执行以下命令,进入vagrant虚拟机

cd ~/vagrant/dev_default & vagrant ssh

vagrant 虚拟机中执行命令

// 切换到root用户
sudo su
// 安装PHP7.3
yum install php73-php-fpm php73-php-mysqlnd php73-php-mbstring php73-php-bcmath php73-php-pecl-imagick php73-php-cli php73-php-xml php73-php-gd php73-php-pear php73-php-intl php73-php-mcrypt php73-php-pecl-redis

vagrant 虚拟机中编辑文件

# 文件路径 /etc/opt/remi/php73/php-fpm.d/www.conf
# 24行
user = vagrant
# 26行
group = vagrant
# 38行
listen = /dev/shm/php73-fpm.sock
# 48行 删除注释符号 ";"
listen.owner = vagrant
listen.group = vagrant
listen.mode = 0660

# 文件路径 /etc/opt/remi/php73/php.ini

# 404 行
memory_limit = 512M
# 609 行
post_max_size = 32M
# 842 行
upload_max_filesize = 32M
# 919行 删除注释符号 ";"
date.timezone = Asia/Shanghai

vagrant 开启php73

systemctl start php73-php-fpm

# 重启NGINX后生效
systemctl restart nginx

MAC 编辑文件,使php73能够开机自动执行

# 文件路径 ~/vagrant/dev_default/Vagrantfile
# 85行添加
systemctl start php73-php-fpm

四、我们经常用到虚拟机vagrant,但是vagrant到底与docker有什么区别呢?

1.虚拟机耗存储、启动慢、需要的依赖多,况且每个虚拟操作系统都需要同等需求,而Docker只需要一个,可想而知;

2.职责的逻辑分类

使用 Docker,开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心如 何管理容器。Docker 设计的目的就是要加强开发人员写代码的开发环境与应用程序要部署 的生产环境一致性。从而降低那种“开发时一切正常,肯定是运维的问题(测试环境都是正 常的,上线后出了问题就归结为肯定是运维的问题)”

3.快速高效的开发生命周期

Docker 的目标之一就是缩短代码从开发、测试到部署、上线运行的周期,让你的应用 程序具备可移植性,易于构建,并易于协作。(通俗一点说,Docker 就像一个盒子,里面 可以装很多物件,如果需要这些物件的可以直接将该大盒子拿走,而不需要从该盒子中一件 件的取。)

4.鼓励使用面向服务的架构

Docker 还鼓励面向服务的体系结构和微服务架构。Docker 推荐单个容器只运行一个应 用程序或进程,这样就形成了一个分布式的应用程序模型,在这种模型下,应用程序或者服 务都可以表示为一系列内部互联的容器,从而使分布式部署应用程序,扩展或调试应用程序 都变得非常简单,同时也提高了程序的内省性。(当然,可以在一个容器中运行多个应用程 序)

【代码如诗】进行了解说:虚拟机与Docker有何不同

【少数pai】关于Docker集成的内容:使用Docker实现丝般顺滑的持续集成

Related Posts

Leave a comment