Docker

vagrant提供了使用Docker作为provider(其他的provider有virtualBox、VMware\hyper-V等)的开箱即用支持。这允许你的开发环境由Docker容器而不是虚拟机支持。此外,它为开发dockerfile提供了一个良好的工作流。

Docker Basic Usage 基本使用

在vagrant中的Docker provider表现得就像其他的provider一样。如果你已经熟悉vagrant,那么使用Docker provider应该是直观和简单的。
Docker provider不需要config.vm.box设置。由于Docker容器的“基本镜像”是从Docker索引中提取的,或者是在Dockerfile中构建的,所以该box不会增加太多的值,对于该provider config.vm.box值的设置是可选的。

Docker Images 镜像

vagrant可以使用的第一个方法是通过镜像来获取Docker容器。此镜像可以来自任何Docker注册表。一个例子如下:

Vagrant.configure("") do |config|
config.vm.provider "docker" do |d|
d.image = "ubuntu:14.04" //镜像名称
end
end

当运行vagrant up --provider=docker命令时,其将启动镜像ubuntu:14.04。
这对于应用程序可能依赖的其他组件非常有用:数据库、队列等。通常,你正在使用的主要应用程序是用Dockerfile构建的,或者通过SSH的容器构建的。

Dockerfiles

vagrant还可以基于本地Dockerfile自动构建和运行镜像。这对于在本地迭代构建到镜像中的应用程序非常有用。一个例子如下:

Vagrant.configure("") do |config|
config.vm.provider "docker" do |d|
d.build_dir = "." //dockerfile文件在Vagrantfile文件所在的当前目录下
end
end

上面的配置将在与Vagrantfile相同的目录中查找Dockerfile。当vagrant up --provider=docker 命令运行时,vagrant会自动构建那个Dockerfile并基于那个Dockerfile启动一个容器。
在调用vagrant reload 命令时会重新构建Dockerfile。

Synced Folders and Networking同步文件夹和网络

使用Docker时,Vagrant会自动将同步文件夹和网络选项转换为Docker数据卷和转发端口。你不必使用特定于docker的配置来完成此工作。这有助于保持你的Vagrantfile与它一直以来的样子相似。
Docker provider不支持为与Docker容器同步的文件夹的所有者或组指定选项。
目前不支持私有和公共网络。

Volume Consistency 数据卷的一致性

在定义同步文件夹时,可以使用docker_consistency选项指定Docker的卷一致性设置。这可以大大提高macOS上的性能。一个例子显示使用缓存和委托设置:

config.vm.synced_folder "/host/dir1", "/guest/dir1", docker_consistency: "cached"
config.vm.synced_folder "/host/dir2", "/guest/dir2", docker_consistency: "delegated"

Host VM 主机虚拟机

如果系统不能本地运行Linux容器,vagrant会自动启动一个“主机VM”来运行Docker。这允许基于docker的vagrant环境保持可移植性,而不会因平台的不同而出现不一致。
vagrant将旋转主机VM的一个实例,并在这个VM上运行多个容器。这意味着使用Docker provider,你只有一个虚拟机的开销,而且只有在绝对必要的情况下才有。
默认情况下,Vagrant启动的主机VM是被boot2docker支持的,因为它启动速度快,使用的资源少。但是主机VM可以定制为指向任何Vagrantfile文件。这允许主机VM通过运行Ubuntu、RHEL等的VM去更接近于生产。它可以运行由Vagrant支持的任何操作系统。

⚠️注意:vagrant将尝试使用“最好”的同步文件夹实现。对于boot2docker,这通常是rsync。在这种情况下,请确保在主机上安装了rsync。如果不是,vagrant会返回给你一个人性化的错误信息。

下面显示了一个更改主机VM的示例。请记住,这是可选的,如果没有指定,vagrant将启动一个默认主机VM:

Vagrant.configure("") do |config|
config.vm.provider "docker" do |d|
d.vagrant_vagrantfile = "../path/to/Vagrantfile"
end
end

主机VM将在provider是Docker的第一个位置上启动。要控制此主机VM,请使用全局状态命令和全局控件。

最新文章

  1. 黑马程序员——有关protocol的小结
  2. mac 上iterm终端显示中文为乱码解决方案
  3. combobox只读代码
  4. poj2187 Beauty Contest(旋转卡壳)
  5. linux提取指定行至指定位置
  6. JQuery EasyUI学习框架
  7. javascript基础-事件2
  8. Java程序设计——学生基本信息管理系统(团队+个人)
  9. 自定义MVC框架---第二章
  10. .net 支付宝接口小小误区
  11. 验证二叉搜索树的golang实现
  12. 关于c++深拷贝与浅拷贝
  13. 自学Java第七周的总结
  14. sqlalchemy 学习-- 多表操作
  15. 原生JS 基础总结
  16. Linux 下误删除恢复,(文件名无法找回)
  17. PHP中开启gzip压缩的2种方法
  18. 访问子节点childNodes
  19. cocos2dx 屏幕分辨率问题
  20. 类似web风格的 Winform 分页控件

热门文章

  1. c# 控制台应用程序批量修改文件夹下的后缀名(包括子文件夹)
  2. Lifting the Stone(hdu1115)多边形的重心
  3. 地区picker 各选择器,优劣分析
  4. 微信小程序获取当前地址以及选择地址详解 地点标记
  5. 洛谷P3924 康娜的线段树(期望 前缀和)
  6. 从零开始学习html(十二)CSS布局模型——下
  7. JavaSE——线程通信
  8. 如何解决Your project contains C++ files but it is not using a supported native build system
  9. LeetCode题解之Univalued Binary Tree
  10. Another reason why SQL_SLAVE_SKIP_COUNTER is bad in MySQL