熟练使用vagrant(17):解决vagrant下载很慢的问题
- 目录:熟练使用vagrant系列文章
- vagrant视频教程:熟练使用vagrant管理虚拟机
熟练使用vagrant(17):解决vagrant下载很慢的问题
vagrant有两方面操作涉及到下载:下载vagrant插件、下载box镜像。
设置代理解决vagrant下载慢的问题
这两方面的慢速问题都可以通过设置代理来解决。
在Linux环境下:
1 | export http_proxy="http://yourproxy:8080" |
在cmd下:
1 | set http_proxy="http://yourproxy:8080" |
在powershell下,设置代理的方式比较麻烦,建议直接切换到cmd下去执行涉及下载类的操作。
然后就可以快速下载box镜像或快速安装vagrant插件:
1 | # 安装插件 |
解决vagrant安装插件慢的问题
vagrant的插件都是ruby gems包,在vagrant嵌入的ruby环境中安装插件对应的gem就表示安装了插件。
所以,将gem的镜像源改为国内的gem镜像源即可:
1 | vagrant plugin install --plugin-clean-sources --plugin-source https://gems.ruby-china.com/ <plugin> |
例如:
1 | vagrant plugin install --plugin-clean-sources --plugin-source https://gems.ruby-china.com/ vagrant-vbguest |
如果是在bash中,可将上面一大串的命令设置为别名方式
1 | $ echo "alias vagrant-install='vagrant plugin install --plugin-clean-sources --plugin-source'" >>~/.bashrc |
vagrant plugin install时加上–debug选项,将可以看到所使用的gem sources列表:
1 | DEBUG bundler: Enabling user defined remote RubyGems sources |
vagrant使用国内box镜像源
vagrant下载国外的box镜像会很慢,但下载国内的box镜像肯定没问题。因此,只需要在使用box name的命令参数处使用对应的URL地址即可。
例如,想要下载CentOS 7的vagrant box镜像,可从中科大的镜像站点(或其他镜像站)找到对应的Box镜像。
对于vagrant box add命令:
1 | vagrant box add my_centos7 http://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7-x86_64-Vagrant-2001_01.VirtualBox.box |
对于vagrant init命令:
1 | vagrant init my_centos7 http://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7-x86_64-Vagrant-2001_01.VirtualBox.box |
对于Vagrantfile文件中指定的box_url链接:
1 | config.vm.box = "my_centos7" |
需注意,vagrant box镜像并没有一个固定的存储站点,除了目前官方使用的https://app.vagrantup.com汇集了几乎绝大多数的box镜像外,其他的box镜像都需要用户自己去搜索。
比较常见的centos box镜像和ubuntu box镜像,可以在它们的cloud站点找到,例如它们自己的官方站点、中科大镜像源站点:
CentOS7:
1 | # CentOS cloud官方镜像站点 |
Ubuntu(以focal即20.04为例),找到其中的xxx-yyy-vagrant.box文件:
1 | # Ubuntu cloud官方镜像站点 |
使用本地box镜像文件
如果手动将box镜像下载下来了,vagrant也可以指定从本地添加box镜像。
例如,本地有一个ubuntu-20.04的vagrant box镜像V:\vagrant_imgs\focal-server-vagrant.box
。
对于vagrant box add命令:
1 | vagrant box add ubunut-2004 V:\vagrant_imgs\focal-server-vagrant.box |
对于vagrant init命令:
1 | # 注意是file://前缀,且路径分隔符为/, |
对于Vagrantfile文件中指定的box_url链接:
1 | # 注意是file://前缀,且路径分隔符为/, |
Vagrantfile中设置虚拟机的代理
使用插件vagrant-proxyconf可以配置虚拟机的一些代理,包括http_proxy/git/yum/apt/npm/docker等代理。
1 | vagrant plugin install vagrant-proxyconf |
然后在Vagrantfile中设置:
1 | Vagrant.configure("2") do |config| |