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,请使用全局状态命令和全局控件。

vagrant特性——基于docker开发环境(docker和vagrant的结合)-1-基本使用的更多相关文章

  1. vagrant特性——基于docker开发环境(docker和vagrant的结合)-0-简介

    原文https://www.hashicorp.com/blog/feature-preview-docker-based-development-environments Feature Previ ...

  2. vagrant打造自己的开发环境

    vagrant打造自己的开发环境 缘由: 在网上看到斌哥,爽神都写了关于vagrant的博客,都在说很强大,所以很好奇这玩意怎么个强大,然后也就自己来一发玩玩看看. 真实缘由: 说实话是电脑配置太低, ...

  3. 使用Vagrant搭建本地python开发环境

    使用Vagrant搭建本地python开发环境 关于vagrant:Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境,它使用Oracle的开源VirtualBox虚拟化系统也可以使 ...

  4. Windows使用Vagrant&VirtualBox搭建虚拟开发环境

    Vagrant 是一款用来构建虚拟开发环境的工具 , 我们可以通过 Vagrant 封装一个 Linux 的开发环境 , 分发给团队成员 ; 成员可以在自己喜欢的桌面系统 Mac/Windows/Li ...

  5. vagrant特性——基于docker开发环境(docker和vagrant的结合)-3-boxes和配置

    Docker Boxes Docker provider不需要vagrant box.因此其config.vm.box设置是完全可选的.但是,仍然可以使用并指定一个box来提供默认值.由于一个带着bo ...

  6. vagrant特性——基于docker开发环境(docker和vagrant的结合)-2-命令

    Docker Commands Docker provider公开了一些额外的vagrant命令,这些命令对于与Docker容器交互非常有用.这有助于你在vagrant之上的工作流程,这样你就可以在底 ...

  7. windows环境 springboot+docker开发环境搭建与hello word

    1,下载安装 docker toolbox 下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ docker t ...

  8. 企业应用架构研究系列十九:Docker开发环境

    软件行业流行这样一个说法,由于Docker 技术的成熟和该技术被广大厂商的普遍应用,成就了微服务领域的快速成长,衍生了云原生技术和公有云的进一步推广.我个人认为Dockers 技术.微服务技术.云原生 ...

  9. Hadoop伪分布配置与基于Eclipse开发环境搭建

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

随机推荐

  1. JAVA设计模式详解(六)----------状态模式

    各位朋友,本次LZ分享的是状态模式,在这之前,恳请LZ解释一下,由于最近公司事情多,比较忙,所以导致更新速度稍微慢了些(哦,往后LZ会越来越忙=.=). 状态模式,又称状态对象模式(Pattern o ...

  2. visual studio 2013 下ef6 CodeFirst 使用SQL Lite 数据库

    今天系统的来记录一下再vs2013下,使用ef6 codefirst功能,来操作SQL lite数据库 本来我以为sqlite数据库用的这么多,ef6肯定支持,结果,使用过程中很多坑,现在我把具体的配 ...

  3. C#里面的事物回滚,解决同步数据插入时出现重复数据

    什么是事物回滚: 举个栗子,你在你家的银行分行取钱,取完钱数据要同步,而且可能每个分行都有一个存储这些数据的数据库,分行的这些 存取的记录都需要实时同步,如果你取完500刚好断电了,好嘛,分行可能刚记 ...

  4. 图像增强算法(直方图均衡化、拉普拉斯、Log、伽马变换)

    一.图像增强算法原理 图像增强算法常见于对图像的亮度.对比度.饱和度.色调等进行调节,增加其清晰度,减少噪点等.图像增强往往经过多个算法的组合,完成上述功能,比如图像去燥等同于低通滤波器,增加清晰度则 ...

  5. JMeter4.0的界面汉化

    1.安装好之后 2.界面汉化 options->choose language->chinese(simplified) 3.汉化完成

  6. Android Studio引用自定义的framework.jar包

    1.在app/libs/目录下添加framework.jar包. 2.打开build->Edit Libraries and Dependencies,把libs/framework.jar放到 ...

  7. LeetCode题解之 Convert Sorted Array to Binary Search Tree

    1.题目描述 2.问题分析 使用二分法即可. 3.代码 TreeNode* sortedArrayToBST(vector<int>& nums) { ) return NULL; ...

  8. Python3 sqlacodegen 根据已有数据库生成 ORM 使用的 model.py

    pip install sqlacodegen pip install pymysql sqlacodegen mysql+pymysql://username:password@127.0.0.1: ...

  9. SQLSERVER NULL和空字符串的区别 使用NULL是否节省空间

    SQLSERVER NULL和空字符串的区别 使用NULL是否节省空间 这里只讨论字符串类型,int.datetime.text这些数据类型就不讨论了,因为是否节省空间是根据数据类型来定的 在写这篇文 ...

  10. python的类基础

    python类的基础: 1,面向对象的基本概念 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的 ...