LXC之三 建立模板

2021-06-22 20:58:16 字數 4416 閱讀 7091

所謂的模板就是乙個原型,依據該原型可以建立一系列類似的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 ...