终于把lxc的网络配通了,也不知道对不对,记一下

一开始都是雷同的地方

yum install libcgroup lxc lxc-templates

安装lxc cgroup

然后记得

chkconfig --level 345 libcgroup on把cgroup始终启动

添加一个桥

ifcfg-eth0改成如下

DEVICE="eth0"
ONBOOT="yes"
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
BRIDGE=virbr0
新建一个ifcfg-virbr0,如下内容

DEVICE=virbr0
TYPE=Bridge
BOOTPROTO=static
DNS1=192.168.8.254
GATEWAY=192.168.8.254
IPADDR=192.168.8.50
NETMASK=255.255.255.0
ONBOOT=yes
重启一下桥就产生了

然后

lxc-create -n testcentos -t centos

创建一个以centos为模板的容器

然后

vi /var/lib/lxc/testcentos/config

lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = virbr0
lxc.network.hwaddr = fe:7c:d6:5a:ed:10
lxc.network.ipv4 = 192.168.8.55/24
lxc.network.ipv4.gateway = 192.168.8.50
lxc.network.name = eth0
lxc.rootfs = /var/lib/lxc/testcentos/rootfs

装完了以后

cat /var/lib/lxc/testcentos/tmp_root_pass

看一下root密码

然后

lxc-start -n testcentos -d

启动容器,并且

lxc-console -n testcentos

登陆容器

登录完了以后问题来了,网络呢?这里搞了好久

sysctl net.ipv4.ip_forward=1

打开转发

然后 iptables设一条规则

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.8.55 -j MASQUERADE

这条规则有问题,一开始设的有点问题,后来改成

iptables -t nat -A POSTROUTING -o virbr0 -s 192.168.8.55 -j MASQUERADE

就没问题了,好奇怪。不懂为什么。但这里也只是保证了能访问实验室外部网络,实验室内部网络还是不通

最后在容器里ping实验室内部地址,再在virbr0上dump icmp包

tcpdump -n -i  virbr0 icmp

发现压根没有包通过,然后发现容器里的路由有问题

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.8.0    *               255.255.255.0 UH    0      0        0 eth0
link-local      *               255.255.0.0     U     1002   0        0 eth0
default         192.168.8.50    0.0.0.0         UG    0      0        0 eth0
也就是说所有192.168.8.0网段的ip都不需要转发直接能被访问到。这个不对,最后在

vi /var/lib/lxc/testcentos/config

里把容器的ip改为lxc.network.ipv4 = 192.168.8.55/32

并且在容器内部的/etc/sysconfig/network-scripts/ifcfg-eth0里改掉netmask

最后都能访问了。

几点疑问,为什么我在所有文档上都没看到类似的做法,大家都是直接重定向到eth0完事呢?

另外容器内部的ip设置也和别人不一样。可能别人都是再加一个子网?

无论怎么样,这个容器算是能用了,有鉴于他的出色计算性能

lxc on centos的更多相关文章

  1. docker是个啥?

    docker 第一问:什么是容器 容器就是在一个隔离的环境中运行的一个进程.注意关键词,隔离和进程.如果进程停止,那么容器就销毁.因为具有隔离的特点,所以每个容器都拥有自己的文件系统:包括IP地址.主 ...

  2. Ubuntu下安装LXC手记之centos

    宿主环境 Ubuntu 14.04 LTS 安装LXC $ sudo apt-get install lxc 安装完毕之后,运行lxc-checkconifg工具,检查当前Linux内核支持LXC的情 ...

  3. docker on centos

    docker最好在centos7上安装,centos6.5上似乎麻烦不少 这里直接在centos7上安装,要提前装一下epel的repo yum install docker 安装就行 chkconf ...

  4. centos6.6 安装 LXC

    LXC,简称Linux containers是docker基础,无奈只能先学习LXC.LXC用途就不多讲,这里只讲LXC的安装以及用途吧! LXC 需要用在内核2.6.27以上 这个可以用 uname ...

  5. 在RedHat/CentOS下安装Docker(不升级内核)

    由于内核版本问题,最初仅Ubuntu可以较好的支持Docker.不过,由于RedHat系列OS(REHL.CentOS)是目前主流的Linux服务器操作系统,所以令RedHat系列OS支持Docker ...

  6. docker入门(1) Centos 7 下docker的安装

    centos 7安装docker 什么是 Docker Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go ...

  7. 虚拟化之lxc

    LXC 中文名称就是 Linux 容器工具,容器可以提供轻量级的虚拟化,以便隔离进程和资源,使用 LXC 的优点就是不需要安装太多的软件包,使用过程也不会占用太多的资源,本文循序渐进地介绍LXC的建立 ...

  8. 容易centos配置docker维修

    首先.由于docker实施需要linux某些组件支持本身和内核特性.所以一定要确保centos版本号大于6,和内核版本号大于2.6.32-431.可轻松升级centos6到最新的版本号. sudo y ...

  9. CentOS 6.8下安装docker并使用

    Docker是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.利用Linux的LXC.AUFS.Go语言.cgroup实现了资源的独立,可以很轻松的实现文件.资 ...

随机推荐

  1. nginx下开启pathinfo模式

    第一种方式是通过重写url来实现pathinfo模式: location / { if (!-e $request_filename){ rewrite ^/(.*)$ /index.php?s=/$ ...

  2. Oracle 11G在用EXP 导出时,空表不能导出解决

    Oracle 11G在用EXP 导出时,空表不能导出解决 (转)(.http://wanwentao.blog.51cto.com/2406488/545154 11G中有个新特性,当表无数据时,不分 ...

  3. IP首部校验和计算

    根据RFC1071文档的计算方法,编写代码实现IP首部校验和的计算 计算步骤: 1.首先将IP首部中校验和字段置0 2.将IP首部每16bit进行相加,如果有进位产生,则将进位加到最低位. 3.将计算 ...

  4. php框架制做笔记

    在学习完基础之后,最好的提高方式是做一个自己的框架,因为框架会用到各个知识点,在制做过程中,复习,巩固,提高. 在框架中,因为是单入口,整个脚本运行时都存在的变量我们应该设为静态变量,这样它在每个地方 ...

  5. 读Windows核心编程-5-作业

    作业(Job) 有时候需要把一些进程集中管理,如终止一个进程以及它产生的子进程,但由于Windows并没有维护进程间父子关系,所以除非进程本身以某种方式记录这些信息,否则很难做到管理这种父子进程树.而 ...

  6. APP审核被拒,原因总结

    今天早上,突然看到上周末提交的APP,审核被拒了.原以为是因为IPV6审核没过,后来查看原因后发现是,app的3张展示图里面,有些内容显示的有:测试XX等字眼.苹果说提交的版本不能是含有 test,t ...

  7. hdoj 1016 Prime Ring Problem

    Problem Description A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ... ...

  8. iOS 单例模式

    主要用于做应用程序的资源共享控制.用途很多⋯⋯ 实质为,单例是在程序声明周期里 有且仅有 被实例化过一次的类.为确保实例化的唯一,利用类的 类(static)方法来生成和访问对象. 至此,你便可以在程 ...

  9. Html/Css(新手入门第三篇)

    一.学习心得---参考优秀的网页来学习. 1我们只做的静态网页主要用的技术?html+css 只要网上看到的,他的源代码公开的.[1].先去分析,他们页面是如何布局(结构化)[2].再试着去做一下,- ...

  10. Android studio 分析内存泄漏

    以前用eclipse的时候,我们采用的是DDMS和MAT,不仅使用步骤复杂繁琐,而且要手动排查内存泄漏的位置,操作起来比较麻烦.后来随着Android studio的潮流,我也抛弃了eclipse加入 ...