Linux LXC基本配置选项

     LXC总是先创建后使用,当一个进程在LXC中运行的时候,进程依赖于一些在lxc创建时配置的一些系统资源的虚拟化和隔离。默认的一些pids、sysv ipc、mount points都会被虚拟化出来和隔离起来,这些配置可以明确的在一个配置文件中定义,例如:如果在创建时没有指定network配置,则lxc会共享创建lxc容器的network环境,但是如果指定了network的配置,则会为lxc创建出一个新的network栈。

     配置文件定义了不同的系统资源给lxc使用,目前utsname、network、mount points、root file system、user namespace、cgroup被支持。配置文件中的每个值都是key=value的格式。

     为了减轻管理员管理多个lxc实例的鸭梨,lxc的配置文件可以嵌套在一个文件中,比如:network的配置可以配置在一个单独的文件中,然后这个network配置文件可以被多个lxc实例使用。所以lxc实例迁移到其他机器时只需要更新这个文件而已。

#指定了要加载的配置文件
lxc.include=/path/file
     lxc配置文件还允许你设置lxc实例的架构,例如:你可以在64位的宿主机器上面运行一个32位的容器的32位程序。

#值可以使用x86、i686、x86_64、amd64
lxc.arch=
     ustname选项定义了lxc容器的hostname、这意味着lxc容器可以有自己的hostname

#设置hostname
lxc.utsname=
      lxc还允许你定义一个信号数字,当你在使用lxc-stop命令停止一个lxc实例的时候,可以使用该信号停止实例。例如:SIGKILL、SIGRTMIN+14等等

#设置信号
lxc.stopsignal=
      network选项定义了容器实例虚拟出来的network环境,network虚拟化工作在第二层,为了使用network虚拟化,必须为lxc容器定义一个网络接口,可以设置多个网络接口在一个lxc实例上面,即时宿主机上只有一个物理网口。

#指定lxc容器使用哪种类型的虚拟网络,几个虚拟化网络可以指定在同一个容器中,作为多个虚拟网口使用,虚拟网络主要有以下类型:empty、veth、valn、macvlan、phys。
#empty:只会创建一个loopback接口
#veth:一个和宿主机等同的网络设备会被建立,容器将连接到lxc.network.link定义的网桥上面,从而与外部通讯,网桥必须事先建立好。默认情况下lxc会自动为创建好的网络设备指定一个名称,如果你希望自己指定名称,可以使用lxc.network.veth.pair定义
#vlan:一个vlan接口会被连接到lxc.network.link指定的接口上,vlan id通过lxc.network.vlan.id来指定
#macvlan:一个macvlan接口会被连接到lxc.network.link指定的接口上,lxc.network.macvlan.mode设置macvlan的模式。
#phys:建立一个新网络空间,lxc.network.link指定的物理接口会被分配给容器
lxc.network.type=


#指定network的状态,up使网络处于可用状态
lxc.network.flags=up

#设置一个接口用于真实的流量传输,比如一个网桥接口、一个真实物理接口
lxc.network.link=

#默认的网络设备名称是自动分配的,如果要自己指定,则可以手动设置,例如:eth0
lac.network.name=

#默认网络接口的mac是自动分配的,你也可以自己指定
lxc.network.hwaddr=

#指定一个ipv4地址作为虚拟网络的ip地址,可以指定多个虚拟网络地址
lxc.network.ipv4=

#设置一个ipv4格式的地址,作为容器内部的gateway,你也可以设置为auto模式,这样意味着你从网桥获取地址,并把它作为gateway。auto只能用于veth金额macvlan
lxc.network.ipv4.gateway=

#设置一个ipv6地址作为虚拟网络的地址
lxc.network.ipv6=

#指定一个ipv6地址作为gateway,也可以设置为auto,自动到网桥去获取。auto只能用于veth和macvlan模式
lxc.network.ipv6.gateway=

#指定一个脚本,在容器创建好虚拟网络后执行。
lxc.network.script.up=

#
lxc.network.script.down=
      在严格隔离容器里面,可以有自己私有的pseudo tty接口

#设置容器有自己的pseudo tty接口,value指定了最大的tty数目
lxc.pts=
      如果容器有配置root filesystem和inittab文件,则你可以设置output输出到那个console中

#指定一个文件的路径,然后console的输出会写到该文件中,none会disable该功能
lxc.console=
      也可以设置通过ttys连接console

#
lxc.tty=
      开启kmsg软连接

#创建/dev/kmsg到/dev/console的软连接
lxc.ksmg=
      mount points选项指定不同的挂载点,这个挂载点是容器私有的额,在进程外部是看不到的。

#指定一个文件位置,该文件是fstab格式的,里面包含了挂载信息。
lxc.mount=

#在一行中指定一个挂载点,是fatab格式的。不用写在fstab文件中
lxc.mount.entry=
      容器的root文件系统可以使用不同于宿主机的系统

#指定容器的root文件系统。可以使一个镜像文一个目录、一个块设备,如果没有指定,则容器和宿主机共享一个文件系统,设定此项以后,容器内所有进程将会把此目录根目录。
lxc.rootfs=

#在旋转之前递归的绑定root文件系统?
lxc.rootfs.mount=

#在lxc.rootfs下面的那个目录转动原来的root文件系统,默认是mnt目录。
lxc.pivotdir=
      cgroup选项可以配置不同的子系统,lxc不检查子系统名称的正确性。详细的cgroup介绍请看:xxxxxx

#设置子系统,例如:lxc.cgroup.cpuset.cpus
lxc.cgroup.[subsystem name]
      如果容器以root用户运行,则可以禁止一些功能

#指定在容器中禁止哪些功能,在一行中定义几个cap,用空格分开,都是以'CAP_'开头,具体cap可以参考http://manpages.ubuntu.com/manpages/saucy/man7/capabilities.7.html
lxc.cap.drop=

#在容器中保持哪些cap
lxc.cap.keep=
      UID映射,在容器中可以开启私有的user namespace。例如:你可以映射容器中的uid 0到宿主机的uid 20000上。容器中的root用户只是限制于容器中。

#value的第一个字母是'u'或者'g',代表是用户还是组要进行映射,接下来是第一个容器中要被映射的user id,最后是宿主机中user id
lxc.id_map=
      日志设置,在容器中也是可以设置日志信息的。容器的启动日志只收集ERROR级别的信息,记录到以容器名开头,以.log结尾的文件中,或者记录在/var/log/lxc下面。默认的日志级别和日志路径都是可以在配置文件中修改的。

#指定日志级别,value是0到8的整数,0=trace,1=debug,2=info,3=notice,4=warn, 5=error,6=critical,7=alert,8=fatal.
lxc.loglevel=

#指定日志路径
lxc.logfile=

下面给出一个例子:

lxc.utsname = complex
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.hwaddr = 4a:49:43:49:79:bf
lxc.network.ipv4 = 10.2.3.5/24 10.2.3.255
lxc.network.ipv6 = 2003:db8:1:0:214:1234:fe0b:3597
lxc.network.ipv6 = 2003:db8:1:0:214:5432:feab:3588
lxc.network.type = macvlan
lxc.network.flags = up
lxc.network.link = eth0
lxc.network.hwaddr = 4a:49:43:49:79:bd
lxc.network.ipv4 = 10.2.3.4/24
lxc.network.ipv4 = 192.168.10.125/24
lxc.network.ipv6 = 2003:db8:1:0:214:1234:fe0b:3596
lxc.network.type = phys
lxc.network.flags = up
lxc.network.link = dummy0
lxc.network.hwaddr = 4a:49:43:49:79:ff
lxc.network.ipv4 = 10.2.3.6/24
lxc.network.ipv6 = 2003:db8:1:0:214:1234:fe0b:3297
lxc.cgroup.cpuset.cpus = 0,1
lxc.cgroup.cpu.shares = 1234
lxc.cgroup.devices.deny = a
lxc.cgroup.devices.allow = c 1:3 rw
lxc.cgroup.devices.allow = b 8:0 rw
lxc.mount = /etc/fstab.complex
lxc.mount.entry = /lib /root/myrootfs/lib none ro,bind 0 0
lxc.rootfs = /mnt/rootfs.complex
lxc.cap.drop = sys_module mknod setuid net_raw
lxc.cap.drop = mac_override


可以参看一下:运维和开发

转载于:https://my.oschina.net/guol/blog/263682

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值