所謂的模板就是乙個原型,依據該原型可以建立一系列類似的lxc
虛擬機器,如果使用
lxc-1.0.0.3
自帶的模板,那麼該原型只提供最基本的配置,如果想使用
vim,對不起,沒有,如果想使用
gcc,抱歉,依然沒有,如果想使用
mysql
,更是沒有。這裡所說的模板製作,只是乙個比較簡單的最基礎的製作,有點類似嵌入式系統的最小系統的概念,只保留最最基本的應用,在這基礎之上,新增一些應用就可以了。
建立的步驟如下:
/tmp/exclude目錄下建立乙個臨時的目錄:
.bash_history
lost+found
/dev/*
/mnt/*
/tmp/*
/proc/*
/sys/*
/usr/src/*
進入/tmp/exclude
目錄下:
tar --numeric-owner -czvf /tmp/centos-5.5-x86_64-image.tgz ./
mkdir -p /var/lxc/centos
cd /var/lxc/centos/
tar xvzf /tmp/centos-5.5-x86_64-image.tgz
更改防火牆設定中的兩項 etc/sysconfig/iptables-config
iptables_modules=""
iptables_modules_unload="no"
編寫建立裝置檔案的指令碼 /var/lxc/fix_dev.sh:
#!/bin/bash
# makes default devices needed in lxc containers
# modified from
root=$(pwd)
dev=$/dev
if [ $root = '/' ]; then
printf "\033[22;35m\ndo not run on the host node\n\n"
tput sgr0
exit 1
fiif [ ! -d $dev ]; then
printf "\033[01;33m\nrun this script in rootfs\n\n"
tput sgr0
exit 1
firm -rf $
mkdir $
mknod -m 666 $/null c 1 3
mknod -m 666 $/zero c 1 5
mknod -m 666 $/random c 1 8
mknod -m 666 $/urandom c 1 9
mkdir -m 755 $/pts
mkdir -m 1777 $/shm
mknod -m 666 $/tty c 5 0
mknod -m 666 $/tty0 c 4 0
mknod -m 666 $/tty1 c 4 1
mknod -m 666 $/tty2 c 4 2
mknod -m 666 $/tty3 c 4 3
mknod -m 666 $/tty4 c 4 4
mknod -m 600 $/console c 5 1
mknod -m 666 $/full c 1 7
mknod -m 600 $/initctl p
mknod -m 666 $/ptmx c 5 2
exit 0
當然這一步關係到建立後的最終原型,具體來說,就是這裡的模板是最簡單的,當然也可以拷貝當前檔案系統的一些檔案目錄,如/bin /sys
等等。例如將
mysql
安裝好了,那麼
/bin
或者/usr/bin
目錄下就會有相應的
mysqldump
等命令,這時再在
/u01
等相關目錄下建立相應的
mysql
需要用到的檔案,然後將
/u01
複製到該目錄下,那麼建立的模板中就可以使用
mysql
了,這一過程中我試過
chroot
命令。
建立檔案:
root@servukas:/var/lxc/centos# sh ../fix_dev.sh
具體的centos
目錄下的內容如下,
bin等目錄是後加進去的,這個方法可以用來新增入
mysql
等原來模板不能提供的一些應用:
建立模板的配置檔案,如果看過lxc1.0.03
的配置檔案,就可以知道其分了兩個部分,乙個是所謂的
comm
,乙個是所謂的
centos
,同理這裡採用了兩個檔案,具體配置檔案如下:
config檔案:
network.type = veth
lxc.network.flags = up
lxc.network.link = virbr0
lxc.network.hwaddr = fe:93:0c:fb:02:3a
lxc.rootfs = /var/lxc/centos
#lxc.rootfs = /usr/local/var/lib/lxc/cn/rootfs
# include common configuration
lxc.include = /var/lxc/centos/centos.common.conf
lxc.arch = i686
lxc.utsname = cn
lxc.autodev = 0
centos.common.conf
lxc.devttydir = lxc
lxc.tty = 4
lxc.pts = 1024
# mount entries
#lxc.mount = /var/lxc/centos.fstab
lxc.mount.auto = proc:mixed sys:ro
# ensure hostname is changed on clone
lxc.hook.clone = /usr/local/share/lxc/hooks/clonehostname
xc.cap.drop = mac_admin mac_override setfcap setpcap
lxc.cap.drop = sys_module sys_nice sys_pacct
lxc.cap.drop = sys_rawio sys_time
# control group devices: all denied except those whitelisted
lxc.cgroup.devices.deny = a
# allow any mknod (but not reading/writing the node)
lxc.cgroup.devices.allow = c *:* m
lxc.cgroup.devices.allow = b *:* m
lxc.cgroup.devices.allow = c 1:3 rwm # /dev/null
lxc.cgroup.devices.allow = c 1:5 rwm # /dev/zero
lxc.cgroup.devices.allow = c 1:7 rwm # /dev/full
lxc.cgroup.devices.allow = c 5:0 rwm # /dev/tty
lxc.cgroup.devices.allow = c 1:8 rwm # /dev/random
lxc.cgroup.devices.allow = c 1:9 rwm # /dev/urandom
lxc.cgroup.devices.allow = c 136:* rwm # /dev/tty[1-4] ptys and lxc console
lxc.cgroup.devices.allow = c 5:2 rwm # /dev/ptmx pty master
模板已經建立好,使用方法如下:
和部落格一簡介那篇文章相比,這裡沒有使用-t centos
引數,-t
表示template
,也就是模板,看上述配置檔案的黃色兩行就可以看出,這裡使用了設計的模板,其中
#開始的是注釋,
#後的為使用模板是的檔案系統路徑。這裡列出來是為了突出兩種情況下的最大區別。所以沒有依賴於
centos
模板。
灰色的兩行,第一行是config
包含的comm
配置檔案,第二行表示下面即配置檔案的開始。
es建立模板
建立模板 注 1.讀取templatefilepath目錄下所有.json結尾的檔案 2.模板名為檔名稱 3.模板內容為檔案內容 param templatefilepath 模板檔案路徑 public static void createestemplate string templatefile...
Django框架學習 5建立模板
如何向請求者返回乙個漂亮的頁面呢?肯定需要用到html css,如果想要更炫的效果還要加入js,這麼一堆欄位串全都寫到檢視中,作為httpresponse 的引數就太麻煩了。在django中,將前端的內容定義在模板中,然後再把模板交給檢視呼叫,各種漂亮 炫酷的效果就出現了。在templates目錄中...
DIY DoNews Blog模板之三 春色滿園
body,html form pagelayout a visited,a active,a link a hover blockquote header header span header header1 headertitle main footer menu menu h1 menu h3 ...