使用vagrant快速創建本地docker開發環境

使用vagrant快速創建本地docker開發環境

在使用vmware或者virtualbox的時候,是不是出現過製作多臺虛擬機的繁瑣,出現過修改鏡像源的麻煩,複製鏡像還要修改ip地址等等,不如寫一個Vagrantfile吧,設置好鏡像源,一鍵安裝,不需要了就直接刪除,老師再也不用擔心我筆記本硬盤不夠了,我也再也不用爲每次創建虛擬機,設置國內鏡像,爲此百度找答案發愁了。

快速安裝vagrant

提供安裝地址及安裝方式mac/win類似

安裝我們所需要的vagrant plugins

[~]$ vagrant plugin list
vagrant-disksize (0.1.3, global)
vagrant-scp (0.5.7, global)
vagrant-share (1.1.10, global)
vagrant-vbguest (0.24.0, global)
# 插件安裝DEMO,可以選擇不安裝,不過以上幾個插件很方便的
sudo vagrant plugin install --plugin-clean-sources --plugin-source https://gems.ruby-china.com/ vagrant-vbguest

編寫Vagrantfile 文件

# 以centos7爲例,創建比較全面的帶有docker本地鏡像及yum鏡像源的虛擬機,此文件一共創建三臺虛擬機,主要用來學習docker swarm
mkdir centos7
cd centos7
cat >Vagrantfile<<EOF
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.require_version ">= 1.6.0"

boxes = [
    {
        :name => "manager",
        :eth1 => "192.168.205.10",
        :mem => "1024",
        :cpu => "1"
    },
    {
        :name => "worker1",
        :eth1 => "192.168.205.11",
        :mem => "1024",
        :cpu => "1"
    },
    {
        :name => "worker2",
        :eth1 => "192.168.205.12",
        :mem => "1024",
        :cpu => "1"
    }
]

Vagrant.configure(2) do |config|

  config.vm.box = "centos7"
  config.vm.box_url = "https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7.box"
  
  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]
        end

        config.vm.provider "virtualbox" do |v|
          v.customize ["modifyvm", :id, "--memory", opts[:mem]]
          v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]
        end

        config.vm.network :private_network, ip: opts[:eth1]
      end
  end
  config.vm.provision "shell", privileged: true, path: "./setup.sh"

end
EOF

# setup.sh 文件內容,此文件主要爲docker添加國內鏡像源,yum的epel阿里鏡像源 docker-compose阿里鏡像源
cat >setup.sh <<ABC
#/bin/sh

# install some tools
sudo yum install -y git vim gcc glibc-static telnet bridge-utils
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# install docker
sudo yum makecache fast
sudo yum -y install docker-ce

# install docker-compose
sudo yum install -y wget
sudo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
sudo yum makecache fast
sudo yum -y install docker-compose


# start docker service
sudo groupadd docker
sudo gpasswd -a vagrant docker
sudo systemctl start docker
sudo cat > /etc/docker/daemon.json<<EOF
{
  "debug": true,
  "experimental": false,
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com"
  ]
}
EOF
sudo systemctl restart docker
ABC

創建虛擬機,等待10-20min即可完成鏡像下載及鏡像自動安裝

	#查看當前目錄,必須在剛纔創建的centos7目錄中
	pwd
	centos7
	# 按照Vagrantfile創建虛擬機
	vagrant up

進入虛擬機或者查看虛擬機狀態

	# 進入虛擬機
	vagrant ssh docker-manager
	# 查看虛擬機狀態
	vagrant status 
	# 停止虛擬機,不添加則停止當前Vagrantfile中所有虛擬機
	vagrant halt [vm_name]
	# 刪除銷燬虛擬機,同上
	vagrant destroy [vm_name]

以上僅個人學習的見解,若有問題,請聯繫在下即可,加油!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章