virtualbox是一款非常强大的免费虚拟机软件,win下的程序猿想玩玩linux/unix的时候必备的利器。
在这个动不动及分布式、云计算、大数据、集群的时代——好吧,现在还有AI、深度学习、神经网络——各种飞速发展的技术,
开发、测试、实验都会用到linux系统, 但是直接用virtualbox直接玩多少还是有点麻烦。
vagrant是一个ruby写的,用来创建和部署虚拟化开发环境。支持virtualbox,使用chef创建自动化虚拟环境,爱折腾的程序猿必备。
想了解的话,网上搜索下,入门资料挺多,使用简单。
下面介绍用vagrantfile在centos7上安装docker,当然不想折腾直接下载带docker的centos就ok了。
下载box:
http://www.vagrantbox.es/ 用Centos 7 x86_64 minimal installation这个版本,
下载后,将下载的box加到vagrant的box list:
# vagrant box add centos7.2 centos7.2.box
创建个目录
# mkdir centos7.2
# mkdir centos7.2 /share
# cd centos7.2
初始化vagrant配置, 将vagrantfile的内容复制到Vagrantfile里
# vagrant init centos7.2
启动, 并通过https://get.docker.com安装,安装过程比较久
# vagrant up
漫长的等待之后,可以连上去看下,docker info的结果
# vagrant ssh
[vagrant@centos7-docker ~]$ docker info
可以退出来后,重新加载下, 看看docker后台进程重启后有没自启动
# vagrant reload
导出box文件,后面想玩,直接用这个box,就可以启动一个系统来
# vagrant package --output centos7.2-docker.box
========================vagrantfile=================================
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
#设置虚拟机的box
config.vm.box = "centos7.2"
#设置虚拟机的主机名
config.vm.hostname = "centos7-docker"
#设置主机与虚拟机的共享目录
config.vm.synced_folder "./share", "/home/vagrant/share"
#Virtualbox相关配置
config.vm.provider "virtualbox" do |v|
#设置虚拟机的名称
v.name = "centos7-docker"
#设置虚拟机的内存大小为2G
v.memory = 2048
#设置虚拟机的CPU个数
v.cpus = 2
end
#使用shell脚本进行软件安装和配置
config.vm.provision "shell", inline: <<-SHELL
#使用163的centos源
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
sudo wget http://mirrors.163.com/.help/CentOS7-Base-163.repo -O /etc/yum.repos.d/CentOS-Base.repo
#升级包和内核
sudo yum clean all
sudo yum makecache #生成缓存
sudo yum -y update
#安装docker
sudo wget -qO- https://get.docker.com | sh
#启动docker服务
sudo service docker start
#测试docker安装结果
sudo docker run hello-world
#设置docker服务启动后自运行
sudo systemctl enable docker
#添加vagrant用户添加到docker权限组
sudo usermod -aG docker vagrant
#清理包
sudo yum clean all
SHELL
end
========================vagrantfile=================================
问题:
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
There are errors in the configuration of this machine. Please fix
the following errors and try again:
vm:
* The host path of the shared folder is missing: ./share
原因: 指定了./share目录作为共享目录的话,需要先建好share目录
问题:
$ vagrant up
There is a syntax error in the following Vagrantfile. The syntax error
message is reproduced below for convenience:
D:/vagrant/centos7.2-docker/Vagrantfile:45: can't find string "SHELL" anywhere before EOF
D:/vagrant/centos7.2-
docker
/Vagrantfile:27: syntax error, unexpected end-of-input, expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END
config.vm.provision "shell", inline:<<-SHELL
^
原因:
inline:<<-SHELL的:和<<之间需要有空格, <<-和SHELL之间不能有空格