詳細解讀Docker-LinuxKit搭建,保你一學就會!
linuxkit這個工具可以理解為是用多個docker鏡像來組成一個最小化、定製化的操作系統,定製化後的系統只有幾十M,配合openstack等雲端用會很爽。不過對於初學者來說,搭建LinuxKit是件很痛苦的事情,接下來就讓學習了課堂為大家詳細解讀Docker-LinuxKit搭建,覺得有用的小夥伴就趕緊收藏起來吧!
1、安裝moby
製作系統需要moby這個工具,系統已經安裝好GO的前提下,執行下面的命令。
命令執行完沒有提示就是正常安裝了。
2、創建linuxkit文件
這個文件里指定了要組合成什麼樣的系統,kernel、init、 onboot、services、 files這個順序是不能變的,見下例:
[root@dockerhub linuxkitdemo]# cat linuxkitone.yml
kernel:
image: "mobylinux/kernel:4.9.x" #內核鏡像
cmdline: "console=ttyS0console=tty0 page_poison=1" #內核命令,可以不指定
init: #初始進程,啟動系統和一些後台容器、配置基礎文件系統掛載等。
- linuxkit/containerd:60e2486a74c665ba4df57e561729aec20758daed
- mobylinux/ca-certificates:eabc5a6e59f05aa91529d80e9a595b85b046f935
onboot: #系統服務
- name: sysctl
image: "mobylinux/sysctl:2cf2f9d5b4d314ba1bfc22b2fe931924af666d8c"
net:host
pid: host
ipc: host
capabilities:
- CAP_SYS_ADMIN
readonly: true
- name: binfmt
image: "linuxkit/binfmt:8881283ac627be1542811bd25c85e7782aebc692"
binds:
- /proc/sys/fs/binfmt_misc:/binfmt_misc
- name: dhcpcd
- /var:/var
- /tmp/etc:/etc
- CAP_NET_ADMIN
- CAP_NET_BIND_SERVICE
- CAP_NET_RAW
net: host
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
services: #如果希望有些應用是隨著系統啟動並一直運行的,可以在這配置;需要注意的是這些服務(也就是docker容器)的啟動是沒順序的,如果有依賴關係需要另外處理。
- name: rngd
image: "mobylinux/rngd:3dad6dd43270fa632ac031e99d1947f20b22eec9"
oomScoreAdj: -800
- name:nginx#服務名稱,自定義
image: "nginx:alpine" # docker鏡像,自由選擇
capabilities: #賦予這個服務具有的能力
- CAP_CHOWN
- CAP_SETUID
- CAP_SETGID
- CAP_DAC_OVERRIDE
net: host #指定網路命名空間,host是共享主機的網路命名空間。
files:
-path:etc/docker/daemon.json
contents: 『{"debug": true}『
trust: #添加信任的鏡像或組織
image:
- mobylinux/kernel
outputs:
-format: kernel+initrd
- format: iso-bios
-format: iso-efi
#指定輸出文件類型,名字默認與.yml文件名字一樣,「moby build」創建鏡像時也可以用「--name」指定鏡像名稱;可以指定的類型有:
lkernel+initrd:不太清楚何時用這個格式;
l iso-bios:包含傳統BIOS的CD鏡像;
l iso-efi:包含EFIBIOS的CD鏡像,適用於較新硬體;
l gcp-img:壓縮過的tar包格式,適用於GoogleCloudPlatform;
l gcp-storage:與Google Cloud Platform有關;
l gcp:與GoogleCloudPlatform有關;
l qcow、qcow2:適用於Qemu的格式;
l vhd:VHD鏡像;
l vmdk:適用於VmWare的VMDK鏡像。
3、製作系統
將上面linuxkit內容放到/opt/linuxkitdemo/linuxkitone.yml里,然後執行下面的命令,cd /opt/linuxkitdemo/ && moby build linuxkitone.yml執行過程比較慢,失敗了就多執行幾次,成功後會在/opt/linuxkitdemo/這個目錄出現如下幾個文件,
出現這些文件是因為在linuxkitone.yml里配置了」outputs」類型。
4、使用鏡像進入系統
可以使用qemu工具,也可以將iso文件放到vmware或virtualbox里啟動。
4.1使用qemu創建虛擬機
創建完畢後界面,
4.2使用virtualbox創建虛擬機
使用生成的鏡像,用vmware創建虛擬機巨慢;用virtualbox創建1分鐘就啟動了,進入後的界面跟上面類似,
因為在linuxkitone.yml里配置的「services」里包含nginx,所以進入系統後nginx服務就是啟動狀態。
在系統里輸入「halt」退出。
怎麼樣?你學會了嗎?如果沒學會,就來「學習了」,這裡有很多技術大咖分享技術經驗,想提高技術能力就快去報名吧!
※粽子和葡萄酒,東西方的完美碰撞
※接吻也是體力活 大哥攤上這妹子太遭罪
※前北京大學校長沈尹默楷書《祝壽序十屏》,至今仍為經典,無人超越
※誰說內向就不能把妹了,4招讓你迅速搞定女神!
※免費!免費!十六朝古都西安的10大免費景點!
TAG:全球搜羅 |
※Python3+Selenium3 Windows下環境搭建
※Jenkins+RobotFramework持續集成測試-jenkins環境搭建
※從零搭建kubernetes多節點cluster
※Appium Android For Mac OS 搭建環境
※三步教你如何使用RT-Thread MicroPython搭建一個Web伺服器
※python selenium環境搭建
※Linux Ubuntu搭建Git伺服器
※linux搭建gitlab
※Spring security + oauth2.0 + redis + mybatis plus 搭建微服務
※Spring Cloud服務發現與服務註冊Eureka + Eureka Server的搭建
※Vue+VueRouter+elememntUI+axios 搭建後台管理系統
※Keepalived+LVS+nginx搭建nginx高可用集群
※Mysql8.0主從搭建,shardingsphere+springboot+mybatis讀寫分離
※Kotlin Android 環境搭建
※搭建Yearning 基於Inception的開源SQL審核平台
※Docker環境下搭建DNS LVS(keepAlived) OpenResty伺服器簡易集群
※SpringBoot+Dubbo搭建微服務
※mac上搭建kafka並利用spark streaming實時消費
※Eclipse JSP/Servlet 環境搭建
※Linux+Nginx+Uwsgi+Django 搭建單服務實現多域名訪問