在Ubuntu Linux 14.04 LTS上如何创建非特权LXC容器
时间:2019-11-20 08:53:48 来源:igfitidea点击:
在Ubuntu Linux 14.04上如何安装,创建和管理非特权LXC容器?
如何创建不需要sudo或者root特权的Linux容器?
在Ubuntu Linux服务器上如何安装和管理LXC容器?
Linux容器
LXC是Linux容器(Linux Container)的缩写。
是一种操作系统级的轻量级的虚拟化技术。
通过它,可以在一台Linux主机上运行多个不同的Linux系统。
非特权Linux容器是指不需要sudo或者root就能运行的容器。
在Ubuntu上安装lxc
输入以下apt-get命令进行安装:
$ sudo apt-get install lxc
LXC和网络
LXC创建了一个NAT网桥。
每个容器有一个NIC接口。
所有的流量都使用网桥路由。
查看当前的设置:
$ sudo brctl show
查看分配给网桥的IP地址:
$ sudo ifconfig lxcbr0
查看容器使用的DHCP IP范围:
$ ps aux | grep lxc-dns | grep -o 'dhcp-range.[0-9].* '
检查当前内核是否支持lxc容器:
$ lxc-checkconfig
创建非特权容器
非特权容器的运行方式与特权容器相同,只是无需使用sudo或root访问权限即可。
为lxc创建一个新用户
执行以下命令创建一个新用户lxcuser
$ sudo useradd -s /sbin/bash -c 'unprivileged lxc user' -m lxcuser
为Lxc设置密码
设置lxcuser的密码
$ sudo passwd lxcuser
查看分配给用户的subuid和subgids
输入以下命令
$ sudo grep lxcuser /etc/sub{gid,uid}
创建默认的容器配置文件
设置允许用户lxcuser创建10个添加到lxcbr0网桥的veth类型设备
$ sudo vi /etc/lxc/lxc-usernet
添加下面内容
lxcuser veth lxcbr0 10
使用su切换到新用户:
$ su - lxcuser
创建新目录~/.config/lxc/Director:
$ mkdir -p ~/.config/lxc
创建默认配置文件default.conf:
$ cp /etc/lxc/default.conf ~/.config/lxc/default.conf $ vi ~/.config/lxc/default.conf
内容如下:
100000和65536分别是用户名ID和组ID
lxc.id_map = u 0 100000 65536 lxc.id_map = g 0 100000 65536
创建新的容器
创建一个新ubuntu系统容器httpd:
$ lxc-create -t download -n httpd -- -d ubuntu -r trusty -a amd64
启动新容器
启动容器httpd:
$ lxc -n httpd -d $ echo $? $ lxc-ls --fancy
登录容器:
$ lxc-attach -n httpd
在容器中执行命令:
root@httpd:/# id uid=0(root) gid=0(root) groups=0(root) root@httpd:/# ifconfig eth0 Link encap:Ethernet HWaddr 00:16:3e:ea:ce:fa inet addr:10.0.3.61 Bcast:10.0.3.255 Mask:255.255.255.0 inet6 addr: fe80::216:3eff:feea:cefa/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:37 errors:0 dropped:0 overruns:0 frame:0 TX packets:35 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:3502 (3.5 KB) TX bytes:3362 (3.3 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) root@httpd:/# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.3 LTS Release: 14.04 Codename: trusty
默认情况下,容器镜像是没有用户帐户的,也没有root密码。
为httpd容器的root设置密码:
# passwd root
在httpd容器中启用sshd:
# apt-get install openssh-server
现在就可以使用ssh登录到容器:
$ ssh [email protected]
LXC容器命令说明
如何启动容器?
$ lxc-start -n {container-name-here} -d $ lxc-start -n mysql -d
如何停止容器?
$ lxc-stop -n {container-name-here} $ lxc-stop -n mysql
如何删除LXC容器?
$ lxc-destroy -n {container-name-here} $ lxc-destroy -n mysql
如何列出所有容器?
$ lxc-ls $ lxc-ls --fancy
如何更新容器?
使用lxc-attach命令更新Ubuntu或Debian容器:
$ lxc-attach -n mysql apt-get -- -qq update $ lxc-attach -n mysql apt-get -- -qq upgrade $ lxc-attach -n nginx yum -- -y update
如何为容器永久IP地址?
在主机中运行以下命令:
$ sudo vi /etc/lxc/dnsmasq.conf
为各个容器设置各自的IP
dhcp-host=httpd,10.0.3.20 dhcp-host=mysql,10.0.3.21 dhcp-host=nginx,10.0.3.23
如何创建CentOS/Gentoo/Fedora LXC容器?
$ lxc-create -t download -n {container-name-here} -- -d {DISTRONAME} -r {RELEASE} -a {ARCH} $ lxc-create -t download -n bar -- -d centos -r 6 -a amd64 $ lxc-create -t download -n foo -- -d gentoo -r current -a amd64 $ lxc-create -t download -n db -- -d ubuntu -r precise -a i386 $ lxc-create -t download -n nginx -- -d debian -r jessie -a amd64 $ lxc-create -t download -n mysql -- -d fedora -r 22 -a amd64 $ lxc-create -t download -n maridb -- -d oracle -r 6.5 -a amd64 $ lxc-create -t download -n cahcing -- -d plamo -r 5.x -a amd64