我的学习笔记——搭建构建unikernel的环境:Unik

pre.ctl { font-family: "Liberation Mono", monospace }
p { margin-bottom: 0.25cm; line-height: 120% }
code.ctl { font-family: "Liberation Mono", monospace }
a:link { }

我的学习 笔记

2017/9/25

一、 搭建Unik的开发环境

去到官方教程网址:https://github.com/cf-unik/unik

然后进入到具体教程文档:https://github.com/cf-unik/unik/blob/master/docs/getting_started.md

——》unik/docs/getting_started.md

0,依据教程需要先安装如下软件包:

Docker installed and running (Docker machine and Docker for Mac are supported)

——》安装方法:

(可以参考)在Ubuntu 14.04安装和使用Docker的教程:

http://www.linuxidc.com/Linux/2015-08/121088.htm

关键命令: apt-get -y install docker.io

注意:我们需要root权限才能执行软件安装的命令,所以普通用户下 要在命令前面加上:sudo

剩下的软件安装就比较简单:例如 sudo apt-get install jq

1,安装、配置和启动Unik??

(1)安装Unik

$
git clone https://github.com/emc-advanced-dev/unik.git
$
cd unik
$
make binary
或者执行:
$
make
$
_build/unik   #编译成功后,执行此条命令
会出现如下提示:
Unik
is a tool for compiling application source code
into
bootable disk images. Unik also runs and manages unikernel
instances
across infrastructures.
...

这将在目录unik / _build / 下生成可执行文件:unik。

使用./_build/unik就可运行UniK命令,或将二进制文件移动到路径的某个位置,例如/ usr / local / bin,可以在任何路径下执行unik命令:unik [command] ,执行命令如下:

$
mv _build/unik /usr/local/bin/

2、在virtualbox上配置主机网络

(1)打开虚拟机:$virtualbox

(2)
打开管理>全局设定>网络>仅主机网络

—》
点击用户界面右侧的绿色添加按钮

—》
记录新的仅主机适配器的名称(例如“vboxnet0”)。您将需要在UniK配置中

—》确保此主机网络启用了Virtualbox
DHCP服务器:

a.选择主机网络后,单击编辑按钮(螺丝刀图像)

b.在“适配器”选项卡中,记下适配器的IPv4地址和网络掩码。

c.
在“DHCP服务器”选项卡中,选中“启用服务器”框

设置服务器在与适配器IP相同的子网上寻址IP。例如,如果适配器IP为192.168.100.1,请将DHCP服务器IP设置为192.168.100.X,其中X为2-254之间的数字。

d.
将服务器掩码设置为您刚刚注意到的网络掩码

将上/下地址设置为同一子网上的IP范围。我们建议使用范围X-254,其中X比您用于DHCP服务器本身的IP高一个。如果您的DHCP服务器为192.168.100.2,则可以分别将下限和上限设置为192.168.100.3和192.168.100.254。

例如:


3.
配置 UniK
daemon (守护进程)

  • UniK
    配置文件存储在 $HOME/.unik
    ,如果不存在,就创建此目录:
$mkdir
$HOME/.unik
(备注说明:.表示是隐藏文件,这里的HOME/表示目录:home/用户名
  • $HOME/.unik/目录下创建一个daemon-config.yaml文件,写入以下内容:
providers:
  virtualbox:
    -
name: my-vbox
      adapter_type:
host_only
      adapter_name:
NEW_HOST_ONLY_ADAPTER

用您创建的网络适配器的名称替换NEW_HOST_ONLY_ADAPTER。

4.
启动UniK并自动部署VirtualBox实例侦听器(
Virtualbox
Instance Listener

  • 打开一个新的终端窗口。 这个终端将是我们离开UniK守护进程的地方。
  • cd到由make创建的_build目录
  • 执行命令:sudo unik daemon --debug (--debug标志是可选的,如果你想看到更详细的输出)
  • UniK将编译和部署自己的30 MB unikernel。 这个unikernel是Unik Instance Listener. The Instance Listener uses udp广播来检测(IP地址)和在Virtualbox上运行的引导实例.
  • 完成后,UniK正在运行并准备好接受命令.
    如图:

  • 打开一个新的终端窗口执行命令:unik
    target --host localhost,将CLI目标设置为本地计算机。

二、写一个Go
HTTP服务器

  1. 从守护进程运行的窗口离开 ,打开一个新的终端窗口。此窗口将用于运行UniK
    CLI命令。
  2. 使用文本编辑器创建一个文件 :httpd.go
    。 将以下代码复制并粘贴到该文件中:
package
maind
import
(
    "fmt"
    "net/http"
)
func
main() {
    http.HandleFunc("/",
handler)
    http.ListenAndServe(":8080",
nil)
}
func
handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w,
"my first unikernel!")
}
  1. 尝试运行此代码:go run http.go.访问 http://localhost:8080/ 看到服务器正在运行。

我们需要创建一个虚拟的Godep文件。告诉Go编译器如何构建Go项目及其依赖关系是必要的。幸运的是,在这个例子中,我们的项目没有依赖关系,我们可以填写一个简单的Godep文件,而无需安装godep.注意:对于具有导入依赖关系的Go项目和嵌套包,您将需要安装Godeps并在项目中运行GO15VENDOREXPERIMENT=1 godep save ./.. 。有关详细信息,请参阅使用UniK编译Go应用程序: Compiling Go Apps with UniK

具体操作步骤:https://github.com/tools/godep

其他学习网站:

http://www.codeweblog.com/go%E8%AF%AD%E8%A8%80%E7%9A%84gopath%E4%B8%8E%E5%B7%A5%E4%BD%9C%E7%9B%AE%E5%BD%95%E8%AF%A6%E8%A7%A3/

GOPATH设置

go 命令依赖一个重要的环境变量:$GOPATH

$ gedit ~/.bashrc

在打开的.bashrc文件中加入如下内容:

export GOPATH=/home/shm/gocode

再执行安装命令:$ go get github.com/tools/godep

(注意:执行该命令后,可能会遇到一些问题,需要根据内容提示,一步步来解决)

  • 要创建虚拟Godeps文件,请在与httpd.go相同的目录中创建名为Godeps的文件夹。 在里面,创建一个名为Godeps.json的文件并粘贴以下内容:
{
        "ImportPath":
"my_httpd",
        "GoVersion":
"go1.6",
        "GodepVersion":
"v63",
        "Packages":
[
                "./.."
        ],
        "Deps":
[
                {
                        "ImportPath":
"github.com/cf-unik/unik/docs/examples",
                        "Rev":
"f8cc0dd435de36377eac060c93481cc9f3ae9688"
                }
        ]
}
  • 为了这个例子的目的,这里重要的是my_httpd。 它指示go编译器,该项目应该从$ GOPATH / src / my_httpd安装。

    例如:
    ‘/home/shm/gocode/src/my_httpd/httpd.go‘

  1. 很好!
    现在我们已经准备好将这个代码编译成unikernel。

三、 编译镜像并在Virtualbox上运行

  1. 从httpd.go所在的目录运行以下命令:
unik
build --name myImage --path ./ --base rump --language go --provider
virtualbox


该命令将指示UniK使用rump-go-virtualbox编译器编译工作目录(./)中找到的源。

2.您可以在运行守护程序的终端窗口中观察build命令的输出。

3.构建完成后,生成的磁盘映像将驻留在$ HOME / .unik / virtualbox / images / myImage /boot.vmdk

4.运行此映像的实例:

unik
run --instanceName myInstance --imageName myImage


  1. 当实例完成启动时,我们来检查它的IP,看看它正在运行我们的应用程序。
  2. 执行命令: unik instances应列出实例IP地址。

7.将您的浏览器指向http:// instance-ip:8080,并看到您的实例正在运行!

测试结果图:

8.清理您的镜像和您创建的实例:

unik rmi --force --image myImage
时间: 2024-10-14 00:53:25

我的学习笔记——搭建构建unikernel的环境:Unik的相关文章

perl学习笔记--搭建开发环境

windows下perl开发环境搭建 perl下载地址:http://www.activestate.com/developer-tools 各个插件的安装方法:(通过代理上网的方法) 方法一:padwalker的安装步骤 1. padwalker下载地址: http://www.bribes.org/perl/ppm/ 2. 解压下载的文件 4. 拷贝 blib/lib/PadWalker.pm 到 Perl/lib(你的安装路径)5. 拷贝 blib/arch/auto/PadWalker

EXTJS学习笔记--搭建实验环境

1.目的 在eclipse中搭建EXTJS的基础环境,学习如何按照从官方下载的代码中搭建新的Extjs工程 2.学习过程中遇到的问题 ext-4.2.1-gpl与ext-4.2.1-commercial的区别        ext-4.2.1-gpl:开源版本,使用GPL开源协议        ext-4.2.1-commercial:商业版本,收费,稳定 作为个人研究来讲,可以使用ext-4.2.1-gpl. 下载的Extjs目录中各个文件说明        主要目录说明 builds目录:压

JAVA学习笔记一(JAVA输出环境变量)

package mytest; import java.util.*;; public class mymain { public static void main(String[] args) { // TODO Auto-generated method stub System.out.print(new Date()); Properties p=System.getProperties(); p.list(System.out); Runtime rt=Runtime.getRuntim

Swift学习笔记(一)搭配环境以及代码运行成功

原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹果以后大力推广的语言哦! 2.Swift给你带来什么机会? 当初你觉得objc太难,学ios学到一半放弃拉,或者进入it行业大家都搞android,你也搞android去了.现在你终于有机会和搞ios的站在一个语言的起跑线上,兄弟!swift传说很容易学哦,搞android的你想不想增加一下本领?提

android学习笔记--检测是否为wifi环境

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); // 获取代表联网状态的NetWorkInfo对象 NetworkInfo wifiInfo = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI); return wifiInfo != null && wifiInfo.isConnected() 返回t

张高兴的 Xamarin.Android 学习笔记:(一)环境配置

最近在自学 Xamarin 和 Android ,同时发现国内在做 Xamarin 的不多.我在自学中间遇到了很多问题,而且百度到的很多教程也有些过时,现在打算写点东西稍微总结下,顺便帮后人指指路了.由于手头没啥中文资料,我也是自己摸索出来的,而且我对 Android 也只是处于最开始的了解阶段(学习笔记嘛,别学边写嘛╮(╯▽╰)╭),难免会出现错误,有问题大家共同讨论(毕竟 .Net 就要靠我们腾达了). 以 Visual Studio 2015 Community 为例. 1. 安装 Xam

学习如何搭建Linux运维环境

搭建学习Linux运维环境 目  录 一.        虚拟机的介绍... 1 1.1 如何选择适合的虚拟机软件... 1 1.2 虚拟机对硬件的要求... 1 二.        创建一个新的虚拟机... 1 1.1 安装VMWare Workstation12. 1 1.2 创建一个新的虚拟机... 2 1.3 完成新虚拟机上的配置... 9 三.        通过setup设置网卡... 17 四.        改变IP地址... 20 五.远程连接... 21 第1章 虚拟机的介绍

Android(java)学习笔记160:Framework运行环境之启动Zygote

前面Android(java)学习笔记159提到Dalvik虚拟机启动初始化过程,就下来就是启动zygote进程: zygote进程是所有APK应用进程的父进程:每当执行一个Android应用程序,Zygote就会孵化一个子线程去执行该应用程序(系统内部执行dvz指令完成的)  Å特别注意:系统提供了一个app_process进程,它会自动启动ZygoteInit.java和SystemServer.java这两个类,app_process进程本质上是使用dalvikvm启动ZygoteInit

Linux学习10-CentOS搭建nginx负载均衡环境

前言 当自己的web网站访问的人越来越多,一台服务器无法满足现有的业务时,此时会想到多加几台服务器来实现负载均衡. 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,怎样将同一个域名的访问分散到两台或更多的机器上呢?这就需要用nginx来配置负载均衡的环境了. 以多个tomcat服务为例,用nginx配置管理多个tomcat服务 什么是负载均衡 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可