下载 vagrant
下载 virtualbox
vagrant --help# 创建目录mkdir DockerProjectcd DockerProject# 创建 centos-7 Vagrantfilevagrant init centos/7# 查看描述文件more Vagrantfile# 安装vagrant up
# 安装/启动vagrant up# 重启vagrant reload# 停止vagrant halt# 删除vagrant destroy# 恢复vagrant resume# ssh 登陆vagrant ssh# 查看状态vagrant status
如果是打开多个,选定主机:
# ssh 登陆vagrant ssh docker-demo
Vagrantfile:
Vagrant.require_version ">= 1.6.0"boxes = [{:name => "docker-demo",:eth1 => "192.168.205.10",:mem => "1024",:cpu => "1"}]Vagrant.configure(2) do |config|config.vm.box = "centos/7"boxes.each do |opts|config.vm.define opts[:name] do |config|config.vm.hostname = opts[:name]config.vm.provider "vmware_fusion" do |v|v.vmx["memsize"] = opts[:mem]v.vmx["numvcpus"] = opts[:cpu]endconfig.vm.provider "virtualbox" do |v|v.customize ["modifyvm", :id, "--memory", opts[:mem]]v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]endconfig.vm.network :private_network, ip: opts[:eth1]endendconfig.vm.synced_folder "./labs", "/home/vagrant/labs", type:"virtualbox"config.vm.provision "shell", privileged: true, path: "./setup.sh"end
setup.sh:
#/bin/sh# install some toolssudo yum install -y git vim gcc glibc-static telnet bridge-utils# install dockercurl -fsSL get.docker.com -o get-docker.shsh get-docker.sh# start docker servicesudo groupadd dockersudo usermod -aG docker vagrantsudo systemctl start dockerrm -rf get-docker.sh
vagrant plugin install vagrant-vbguest
vagrant 有四种共享目录的方式:
NFS 共享方式,windows 平台无法使用此配置,且用此方式时不能修改文件的所有者和所有组。
RSync 共享方式,所有平台都可以使用,但这种方式貌似有个缺点就是主机的改动可以同步到虚拟机中,但虚拟机中的改动无法同步到主机中,如果要实现双向同步可能还需做其它设置。
SMB 共享方式,只有 windows 平台可以使用。
VirtualBox 共享方式,这是 VirtualBox 提供的也是 vagrant 默认的共享方式。当文件数量小时用着不错,当文件数量大的时候打开网页会卡到超时。
通过 vagrant-winnfsd 可以实现 NFS 同步。
vagrant plugin install vagrant-winnfsd
修改后的 Vagrantfile:
Vagrant.require_version ">= 1.6.0"boxes = [{:name => "shiyu-docker",:eth1 => "192.168.205.10",:mem => "2048",:cpu => "1"}]Vagrant.configure(2) do |config|config.vm.box = "centos/7"boxes.each do |opts|config.vm.define opts[:name] do |config|config.vm.hostname = opts[:name]config.vm.provider "vmware_fusion" do |v|v.vmx["memsize"] = opts[:mem]v.vmx["numvcpus"] = opts[:cpu]endconfig.vm.provider "virtualbox" do |v|v.customize ["modifyvm", :id, "--memory", opts[:mem]]v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]endconfig.vm.network "private_network", type: "dhcp", ip: opts[:eth1]endendconfig.vm.synced_folder "./labs", "/home/vagrant/labs", type: "nfs", automount: trueconfig.vm.provision "shell", privileged: true, path: "./setup.sh"end