Vagrant使用案例

2017-05-15 by subond

1.单机配置

1) 配置一个centos7系统,要求使用私有网络地址192.168.10.10,hostname为dbserver。

Vagrant.configure("2") do |dbserver|
  dbserver.vm.box = "centos/7"
  dbserver.vm.network "private_network", ip: "192.168.10.10"
  dbserver.vm.hostname = "dbserver"
end

需要说明的是:使用私有地址,vm的私有ip只能在各vm间互访,而不能访问Internet,即HOST_ONLY模式;使用公有地址,vm的公有地址将于主机某个网卡(启动vm时需指定)的地址同一网段,vm能够使用该地址访问Internet。

2) 配置一个ubuntu xenial64系统,并将工程目录下的data目录同步到vm中,目录为/vagrant/project_data;同时将vm的80端口映射到主机的8080端口。

Vagrant.configure("2") do |ubuntu16|
  ubuntu16.vm.box = "ubuntu/xenial64"
  ubuntu16.vm.network "forwarded_port", guest: 80, host: 8080
  ubuntu16.vm.synced_folder "/Users/subond/UCloud/VHost/data", "/project_data"
end

需要说明的是:指定同步文件时,第一个参数既可以当前工程目录的相对目录,也可以是主机上的绝对路径;第二个参数是vm中的绝对路径。默认情况下,当前工程目录下的文件将同步至vm中的/vagrant目录下。

3) 配置一个centos7系统,要求设置vm的名字为foobar,内存大小为512M。

Vagrant.configure("2") do |centos|
  centos.vm.box = "centos/7"
  centos.vm.provider "virtualbox" do |vm|
    vm.customize ["modifyvm", :id, "--name", "foobar", "--memory", "512"]
  end
end

2.分布式系统配置

1) 创建两个主机,一个做服务端,hostname为server,一个做客户端,hostname为client,两个虚拟均设置私有网络,并配置dhcp服务。

Vagrant.configure("2") do |subond|
    subond.vm.box = "centos/7"
    subond.vm.define "server" do |server|
        server.vm.network "private_network", type: "dhcp"
        server.vm.hostname = "server"
    end

    subond.vm.define "client" do |client|
        client.vm.network "private_network", type: "dhcp"
        client.vm.hostname = "client"
    end
end

2) 创建一个具有三个节点的集群,hostname分别为node1,node2,node3,并设置私有网络;节点大小Mem = 2048,CPU = 1;同时将其配置成docker开发环境。

Vagrant.configure("2") do |cluster|
  (1..3). each do |i|
    cluster.vm.define "node#{i}" do |node|
      node.vm.box = "centos/7"
      node.vm.hostname = "node#{i}"
      node.vm.network "private_network", ip: "192.168.10.#{i+10}"
      node.vm.provider "virtualbox" do |v|
         v.name = "node#{i}"
         v.memory = 2048
         v.cpus = 1
      end
      node.vm.provision "shell", inline: <<-SHELL
        yum install wget -y
        wget -P /home/vagrant https://download.docker.com/linux/centos/7/x86_64/stabl    e/Packages/docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm
        yum install /home/vagrant/docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm -y
       SHELL
    end
  end
end

需要的说明的是:如果需要shell功能,最好的方式就是单独写shell脚本,通过文件同步的方式注入虚机;安装包文件也最好使用这种方式,速度会快一些。

参考资料

[1]. 使用Vagrant创建多节点虚拟机集群
[2]. docker安装
[3]. vagrant provider配置
[4]. vagrant provision配置


Vagrant的快速使用

2017-05-10 by subond

Vagrant是为了方便的实现虚拟化环境而设计的,使用Ruby语言开发,基于VirtualBox等虚拟机管理软件的接口,提供了一个可配置、轻量级的便携式虚拟开发环境。使用Vagrant可以很方便的就建立起来一个虚拟环境,而且可以模拟多台虚拟机,形成分布式系统。

read more

Docker进阶:服务配置

2017-05-01 by subond

当使用Docker Swarm模式时,我们可以通过命令docker service create向Swarm集群部署应用服务。Swarm集群中的管理节点将服务描述视为应用服务所需的状态。其次,所有服务相关的命令,即docker service,一定要在管理节点上运行(管理节点负责Swarm集群中的服务管理和任务编排)。

read more

Docker进阶:以Swarm模式运行Docker引擎

2017-04-28 by subond

Docker Engine 1.12及后续版本支持Swarm模式,我们可以通过以下两种方式开始Swarm模式:创建一个Swarm集群和加入一个已有的Swarm集群。

read more

Docker集群:工作原理

2017-04-26 by subond

一个Swarm是一组Docker引擎或节点的集群,并在这个集群之上部署服务和应用。我们可以使用Docker命令行工具或者API管理集群中的节点,并且还可以通过Swarm部署和编排相应的服务。当我们没有使用Swarm模式的时候,我们只是简单地对容器进行操作;而在Swarm模式下,我们就可以对服务进行编排。值得注意的是,在同一个Docker实例上既可以运行Swarm的服务,也可以运行独立的容器。

read more

Docker集群:服务回滚

2017-04-24 by subond

一个Swarm是一组Docker引擎或节点的集群,并在这个集群之上部署服务和应用。我们可以使用Docker命令行工具或者API管理集群中的节点,并且还可以通过Swarm部署和编排相应的服务。当我们没有使用Swarm模式的时候,我们只是简单地对容器进行操作;而在Swarm模式下,我们就可以对服务进行编排。值得注意的是,在同一个Docker实例上既可以运行Swarm的服务,也可以运行独立的容器。

read more

Docker集群:服务部署

2017-04-22 by subond

一个Swarm是一组Docker引擎或节点的集群,并在这个集群之上部署服务和应用。我们可以使用Docker命令行工具或者API管理集群中的节点,并且还可以通过Swarm部署和编排相应的服务。当我们没有使用Swarm模式的时候,我们只是简单地对容器进行操作;而在Swarm模式下,我们就可以对服务进行编排。值得注意的是,在同一个Docker实例上既可以运行Swarm的服务,也可以运行独立的容器。

read more

Docker技术:快速上手教程

2017-04-20 by subond

本文目录:

1.构建容器-Containers

Dockerfile将定义容器中环境的内容。通过将访问资源(例如,网络接口和磁盘驱动器)进行虚拟化处理,实现与宿主机系统的隔离。为此,我们需要将端口映射到外部宿主系统环境中,并说明将要把那些文件“复制”到隔离的环境中,即容器。这样之后,我们就可以期望在Dockerfile中定义的应用程序可以在任何地方运行。

Dockerfile

创建一个新的空目录,在目录下创建名为Dockerfile的文件,并写入以下内容。

# Use an official Python runtime as a base image
FROM python:2.7-slim

# Set the working directory to /app …
read more

Docker技术:Dockerfile的定义与使用

2017-04-18 by subond

Dockerfile是Docker用来构建镜像的文本文件,包括自定义指令和格式。命令docker build可以与Dockerfile文件中构建我们自己需要的镜像。

read more

Docker技术:Docker系统架构

2017-04-16 by subond

本文目录:

Docker Engine

Docker Engine主要包含三个组件,如下图所示:

  • Docker Server:一个长时间运行的守护进程。
  • REST API:指定程序可以用来与守护进程通信的接口。
  • Client:命令行CLI客户端。

Docker全局预览

CLI利用脚本或直接输入命令的方式,通过REST API与Docker Daemon(守护进程)进行通信,并完成相关操作。Docker Damemon是负责容器对象的主体,例如镜像,容器实例,网络管理以及数据卷等。

Docker交付内容

  • 快速,一致地交付应用程序

Docker允许开发人员通过提供本地容器标准化环境,从而简化应用程序和服务的开发生命周期。容器可以适用于连续集成和持续开发的工作流程。Docker的便携性和轻量级性质使得轻松实现动态管理工作负载,按照业务需求来实现扩展或拆除应用程序和服务

  • 在同一硬件上可允许多个工作流程

Docker重量轻,速度快。它为基于虚拟机管理程序的虚拟机提供了可行的,具有成本效益的替代方案,因此可以使用更多的计算能力来实现业务目标。Docker是高密度环境和中小型部署的理想选择,您需要用更少的资源来做更多的事情。

Docker系统架构

Docker采用Client/Server架构模式,其系统架构如下图所示 …

read more