如何使用LXC创建容器

目录

容器技术

LXC


容器技术

        前一篇文章介绍了,所谓容器,简单来说是一组资源隔离、资源受限的进程。核心技术使用了Linux内核中的Namespa 和Cgroup。

        即利用Linux内核我们就能创建所谓的容器。下面介绍下如何使用lxc来创建简单的容器

LXC

        LXC(Linux Containers),即Linux容器,是一个操作系统层面的虚拟化技术。利用Linux内核中的CGroup + Namespace + Chroot技术,其中CGroup提供资源隔离,Namespace提供命名空间隔离,而Chroot是最简单和古老的容器化技术,更改了进程的根目录,限制访问和可见性,把容器内所有的依赖的程序/文件复制到单独的目录中。

#CentOs7.5

#1. 按照lxc lxc-templates
> yum install lxc lxc-templates

#2. lxc-checkconfig ==> cgroup + namespace必须启动
> lxc-checkconfig
Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-3.10.0-862.3.2.el7.x86_64
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
newuidmap is not installed
newgidmap is not installed
Network namespace: enabled
Multiple /dev/pts instances: enabled

--- Control groups ---
Cgroup: enabled
Cgroup clone_children flag: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled

--- Misc ---
Veth pair device: enabled
Macvlan: enabled
Vlan: enabled
Bridges: enabled
Advanced netfilter: enabled
CONFIG_NF_NAT_IPV4: enabled
CONFIG_NF_NAT_IPV6: enabled
CONFIG_IP_NF_TARGET_MASQUERADE: enabled
CONFIG_IP6_NF_TARGET_MASQUERADE: enabled
CONFIG_NETFILTER_XT_TARGET_CHECKSUM: enabled

--- Checkpoint/Restore ---
checkpoint restore: enabled
CONFIG_FHANDLE: enabled
CONFIG_EVENTFD: enabled
CONFIG_EPOLL: enabled
CONFIG_UNIX_DIAG: enabled
CONFIG_INET_DIAG: enabled
CONFIG_PACKET_DIAG: enabled
CONFIG_NETLINK_DIAG: enabled
File capabilities: enabled

Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /bin/lxc-checkconfig


#3. 安装了lxc-templates,默认支持以下容器模板
> ls -l /usr/share/lxc/templates/
总用量 340
-rwxr-xr-x 1 root root 10579 3月   7 2019 lxc-alpine
-rwxr-xr-x 1 root root 13537 3月   7 2019 lxc-altlinux
-rwxr-xr-x 1 root root 10839 3月   7 2019 lxc-archlinux
-rwxr-xr-x 1 root root  9677 3月   7 2019 lxc-busybox
-rwxr-xr-x 1 root root 29971 3月   7 2019 lxc-centos
-rwxr-xr-x 1 root root 10486 3月   7 2019 lxc-cirros
-rwxr-xr-x 1 root root 18342 3月   7 2019 lxc-debian
-rwxr-xr-x 1 root root 18064 3月   7 2019 lxc-download
-rwxr-xr-x 1 root root 49438 3月   7 2019 l
使用 lxc 创建容器时,可以选择使用桥接方式或者 NAT 方式进行网络连接。 1. 桥接方式 使用桥接方式时,需要先创建一个桥接接口 br0,然后将这个接口与主机的物理网卡 eth0 进行桥接,最后将容器的网络接口 veth0 与桥接接口 br0 进行连接。 以 Ubuntu 为例,执行以下命令: ```bash # 创建桥接接口 br0 sudo brctl addbr br0 # 将主机的物理网卡 eth0 与桥接接口 br0 进行桥接 sudo brctl addif br0 eth0 # 启动容器(以名称为 example 的容器为例) sudo lxc start example # 进入容器 sudo lxc exec example bash # 在容器中配置网络接口 veth0 echo "auto veth0" >> /etc/network/interfaces echo "iface veth0 inet dhcp" >> /etc/network/interfaces exit ``` 然后在主机上执行以下命令,将容器的网络接口 veth0 与桥接接口 br0 进行连接: ```bash sudo brctl addif br0 veth0 ``` 2. NAT 方式 使用 NAT 方式时,容器的网络接口 veth0 将与 lxcbr0 接口进行连接,lxcbr0 接口将通过 NAT 的方式与主机的物理网卡 eth0 进行连接。 以 Ubuntu 为例,执行以下命令: ```bash # 启动容器(以名称为 example 的容器为例) sudo lxc start example # 进入容器 sudo lxc exec example bash # 在容器中配置网络接口 veth0 echo "auto veth0" >> /etc/network/interfaces echo "iface veth0 inet dhcp" >> /etc/network/interfaces exit ``` 然后在主机上执行以下命令,将容器的网络接口 veth0 与 lxcbr0 接口进行连接: ```bash sudo lxc config device add example eth0 nic nictype=bridged parent=lxcbr0 ``` 以上是两种连接方式,可以根据实际情况选择合适的方式进行连接。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值