學習網址:https://github.com/cf-unik/unik/blob/master/docs/cli.md
命令行界面
UniK cli將調用UniK的REST API,使UniK變得簡單。
- 管理Unik
- 圖片
- 實例
- 卷
- Unik Hub
運行守護進程
cli用於啓動UniK守護進程。啓動守護進程:
unik daemon
建議啓動守護進程作爲後臺進程,&
因爲它被設計爲長時間運行。
unik daemon
使用以下標誌:
--debug
(bool,可選)守護進程的詳細日誌記錄--f string
(字符串,可選)路徑到守護程序配置文件(默認爲$ HOME / .unik / daemon-config.yaml)--logfile string
(字符串,可選)輸出日誌到文件(除了stdout)--port int
(int,可選)守護進程監聽端口(默認爲3000)--trace
(bool,可選)將堆棧跟蹤添加到守護程序日誌中
使用示例
unik daemon --f ./my-config.yaml --port 12345 --debug --trace --logfile logs.txt
- 將使用my-config.yaml中的配置文件啓動守護程序
- 運行在端口12345
- 調試模式激活
- 跟蹤模式激活
- 將日誌輸出到logs.txt
定位UniK守護進程
跑
unik target --host localhost
如果在本地機器上運行UniK。除此以外
unik target --host host_address [--port port]
將目標設置爲遠程UniK主機。使用該port
標誌是可選的,只有daemon
在非默認(3000)端口上運行時才需要使用該標誌 。
注意:客戶端命令(非命令unik daemon
)的目標可以用--host
標誌覆蓋(使用除默認值之外的目標)。
列出可用的供應商
unik providers
返回可用於目標unik後端的提供商列表。
列出可用的編譯器
unik compilers
返回可用於目標unik後端的編譯器列表。
建立形象
將源文件編譯成可運行的unikernel映像。
必須使用特定的編譯器編譯圖像。編譯器由3個元素組成:
- 基礎:Unikernel Base來構建映像。這些包括不同的unikernel實現,如rumprun,IncludeOS等。
- 語言:應該使用圖像構建的語言/運行時。一個golang項目例如指定
-language go
。支持的語言取決於unikernel基礎。 - 提供者:(雲/虛擬機管理程序)提供者應構建映像。支持的提供程序取決於unikernel基礎。
爲了查看所有支持的基本/語言/提供者組合的列表,請運行 unik compilers
必須爲特定供應商編寫圖像,並使用--provider
標誌指定要查看可用提供程序的列表,請運行unik
providers
必須使用--base
標誌指定與提供程序兼容的unikernel基礎。
必須使用該--language
標誌指定與基礎兼容的語言運行時。
要查看所有兼容的基本語言 - 提供程序組合的表,請運行 unik compilers
如果您希望將卷附加到圖像的實例上,則必須事先編譯圖像並列出預期的掛載點。例如,對於從“/ data”文件夾讀取的應用程序,unikernel應該使用該標誌進行編譯--mount
/data
必須在編譯時指定要傳遞給unikernel的運行時參數。您可以將參數指定爲傳遞給該--args
標誌的單個字符串
圖像名稱必須是唯一的。如果圖像存在相同名稱,則可以使用--force標誌強制覆蓋
使用示例
unik build --name myUnikernel --path ./myApp/src --base rump --language go --provider aws --mountpoint /foo --mountpoint /bar --args 'arg1 arg2 arg3' --force
- 將使用./myApp/src中找到的源創建一個名爲myUnikernel的Go unikernel,
- 使用針對AWS基礎架構的rumprun編譯,
- 期望在運行時在/ foo上安裝一個卷,
- 期待另一個卷在運行時掛載在/ bar,
- 在應用程序運行時將“arg1 arg2 arg3”作爲參數傳遞,
- 並在編譯之前刪除名稱myUnikernel的任何先前存在的實例和映像
另一個例子(僅使用必需的參數):
unik build -name anotherUnikernel -path ./anotherApp/src --base includeos --language cpp --provider virtualbox
用法:unik build [flags]
標誌:
--args string
(字符串,可選)在運行時傳遞到unikernel--base string
(string,required)要使用的unikernel基址的名稱--force
(bool,可選)強制使用此名稱覆蓋以前存在的圖像--language string
(string,required)目標語言來構建源代碼--mountpoint value
(字符串,重複)最多爲卷指定8個安裝點(默認值爲[])--name string
(string,required)命名爲unikernel。必須是獨一無二的--path string
(字符串,必需)路徑到根應用程序源文件夾--provider string
(string,required)要編譯的目標基礎架構的名稱--no-cleanup
(bool,可選)告訴UniK如果構建失敗,不要從構建過程清除任何工件。用於調試目的。
列出可用的圖像
unik images
列出提供商所有可用的unikernel圖像。包括運行和管理實例的重要信息,包括圖像所需的安裝點。
獲取特定圖像的JSON表示形式:
unik describe-image --image IMAGE_NAME
刪除圖像
unik delete-image --image IMAGE_NAME
使用--force
強制刪除unikernel如果這個圖像的任何實例當前正在運行的相關情況。
運行一個實例
unik run --instanceName INSTANCE_NAME --imageName IMAGE_TO_USE
從unik編譯的unikernel磁盤映像中部署運行的實例。該實例將部署在該圖像編譯的提供程序上。例如,如果圖像是爲virtualbox編譯的,unik將嘗試在配置的虛擬機環境中部署映像。
“unik run”需要一個unik管理的卷(請參見“unik卷”和“unik創建卷”),並附加到圖像編譯時指定的每個安裝點。這意味着如果圖像是使用兩個裝載點,/ data1和/ data2進行編譯的,那麼'unik run'需要在運行時將2個可用卷附加到實例上,這些卷必須用標記--vol SOME_VOLUME_NAME:/ data1 --vol ANOTHER_VOLUME_NAME:/ data2如果圖像不需要安裝點,則無法附加捲。
環境變量可以通過使用-env標誌在運行時設置。
使用示例
unik run --instanceName newInstance --imageName myImage --vol myVol:/mount1 --vol yourVol:/mount2 --env foo=bar --env another=one --memory 1234
- 將在供應商環境myImage編譯並創建myImage的一個實例
- 實例將被命名爲newInstance
- 實例將嘗試將unik管理的卷myVol安裝到/ mount1
- 實例將嘗試將unik管理的卷yourVol掛載到/ mount2
- 實例將使用env變量
foo
設置爲引導bar
- 實例將使用env變量
another
設置爲引導one
- 實例將獲得1234 MB的內存
- 注意,運行必須採取恰好一個--vol參數每個安裝在圖像規範中定義點
標誌:
--env value
(字符串,重複)爲實例設置任意數量的環境變量。必須格式爲KEY = VALUE(默認[])--imageName string
(string,required)要使用的圖像--instanceName string
(string,required)給出實例的名稱。必須是獨一無二的--vol value
(字符串,重複)每個--vol標誌指定一個卷ID和相應的裝載點,以在引導時附加到該實例。卷必須附加到圖像預期的每個安裝點的實例。運行'unik image(image_name)'來查看圖像所需的安裝點。以“volume_id:mount_point”格式指定(默認值爲[])--instanceMemory
(int,可選)指定給實例的內存量(以MB爲單位)。如果沒有給出,則將使用提供程序默認值--no-cleanup
(bool,可選)告訴UniK如果啓動失敗,不要從啓動實例進程清除任何工件。用於調試目的。--debug-mode
(bool,可選)以Debug模式運行實例,因此可以附加GDB。目前僅支持QEMU提供商
列出可用實例
unik instances
列出提供程序中所有可用的unikernel實例。
獲取specifig實例的JSON表示形式:
unik describe-instance --instance INSTANCE_NAME
刪除一個實例
unik delete-instance --instance INSTANCE_NAME
使用--force
強制刪除被通電的情況下
關閉實例
unik stop --instance INSTANCE_NAME
在實例創建之後關閉實例是關閉或分離卷的必要步驟。
開啓實例
unik start --instance INSTANCE_NAME
檢索或跟蹤實例日誌
unik logs --instance INSTANCE_NAME
從正在運行的unikernel實例檢索日誌。
無法在關閉狀態的實例上使用。使用--follow
標誌附加到實例的stdout --delete
與--follow
實例的HTTP連接中斷(通過客戶端斷開連接)結合使用強制自動實例刪除。該--delete
標誌通常用於與編排軟件(如可能需要持久的http連接管理實例的集羣管理器)一起使用。
使用示例
unik logs --instance myInstance
- 從引導時起將從myInstance返回捕獲的stdout
unik logs --instance myInstance --follow --delete
- 將打開cli和unik後端之間的http連接,將stdout從實例流向客戶端
- 當客戶端斷開連接(即使用Ctrl + C)時,unik將自動關閉電源並終止該實例
創建卷
unik create-volume
創建一個可以連接到unik管理的實例並從其分離的數據卷。
卷可以從目錄創建,這將將目錄的內容複製到捲上。也可以創建空卷。
在刪除實例後,卷將持續存在,允許應用程序數據在單個實例的生命週期之外持久化。
如果指定數據文件夾(使用--data),則不需要指定卷的大小。UniK會自動調整音量以適應所提供的數據。可以使用--size標誌來請求更大的音量。
如果沒有提供數據目錄,則--size是指定要創建的空卷所需大小的必需參數。
爲特定提供者創建卷,並使用--provider標誌指定。卷只能附加到同一提供者類型的實例。要查看可用提供商的列表,請運行'unik providers'
卷名必須是唯一的。如果卷的名稱相同,則在創建新卷之前,您將需要使用'unik delete-volume'刪除卷。
--size參數使用MB
示例用法:unik create-volume --name myVolume --data ./myApp/data --provider aws
- 將使用./myApp/src中的數據創建名爲myVolume的EBS支持的AWS卷,
- 如果卷的大小較大,則大小將爲1GB(AWS上的默認最小大小)或更大
另一個例子(空卷):unik create-volume -name anotherVolume --size 500 -provider vsphere
- 將創建一個500mb稀疏的vmdk文件,並將其上傳到vsphere數據存儲,其中可以將其附加到vsphere實例
標誌:
--size int
(int,special)大小以MB創建卷。如果提供了--data,則爲可選項--data string
(字符串,特殊)路徑到數據文件夾。如果提供了--size可選--name string
(string,required)命名爲unikernel。必須是獨一無二的--provider string
(string,required)要編譯的目標基礎架構的名稱--no-cleanup
(bool,可選)告訴UniK如果構建失敗,不要從構建過程清除任何工件。用於調試目的。
列出卷
unik volumes
列出供應商中所有可用的unik管理卷。
ATTACHED-INSTANCE
給出卷附加到的實例的實例ID(如果有)。只有沒有附件的卷可以附加到實例。
附加捲
unik attach-volume --instance INSTANCE_ID --volume VOLUME_ID --mountPoint MOUNT_POINT
將卷附加到指定裝載點處的已停止實例。您可以按名稱或ID指定卷。
卷必須附加到實例上的可用安裝點。安裝點是圖像特定的,並且在圖像被編譯時確定。
有關此實例的映像上的安裝點的列表,請運行unik images
或 unik
describe image
如果指定的安裝點被另一個卷佔用,則該命令將導致錯誤
標誌:
--force
(bool,可選)在運行的情況下強制刪除卷--instance string
(string,required)要附加的實例的名稱或ID。unik接受名稱或ID的前綴--mountPoint string
(字符串,必需)卷的安裝路徑。這應該反映圖像上指定的映射。運行'unik描述圖像'以查看圖像的預期安裝點--volume string
(string,required)要附加的卷的名稱或ID。unik接受名稱或ID的前綴
分離卷
unik detach-volume --volume VOLUME_ID
將卷分解到指定裝入點處的已停止實例。您可以按名稱或ID指定卷。
拆卸卷後,卷可以安裝到另一個實例。
如果實例未停止,則分離將導致錯誤。
別名:detach-volume,detach
標誌:
--volume string
(string,required)要分離的卷的名稱或ID。unik接受名稱或ID的前綴
刪除卷
unik delete-volume --volume VOLUME_NAME [--force]
--force
如果當前附加的話,則在刪除之前分離卷。
登錄
unik login
- 登錄到Unik Repository來拉和推圖像
- 這實際上不會進行身份驗證(因爲Unik Hubs是無狀態的),而是將客戶端配置設置爲
~/.unik/hub-config.yaml
推
unik push --image myImage
- 將編譯的映像從本地提供程序(Xen,Virtualbox或QEMU)推送到支持S3的Hub Repository
拉
unik pull --image myImage --provider virtualbox|qemu|xen
- 將已編譯的映像從S3支持的Hub Repository拉到本地提供程序(Xen,Virtualbox或QEMU)到支持S3的Hub Repository
- 提供者指定圖像指定的體系結構。
搜索
unik search [image_name]
- 搜索可用的圖像。可選過濾器
image_name