Articles of LXC

Ubuntu LXC 14.04错误

我在Ubuntu 14.04中安装了LXC。 我已经使用了现有的模板,并通过执行下面的命令来创build一个虚拟机。 /usr/share/lxc-templates/lxc-ubuntu -p /lxc/vm0 安装后得到下面的错误。 lxc-unshare: symbol lookup error: /usr/lib/x86_64-linux-gnu/liblxc.so.1: undefined symbol: cgmanager_get_pid_cgroup_abs_sync 当我用lxc-*执行任何命令时,同样的错误会重复。 可能是什么问题? 我怎样才能得到这个固定的? 谢谢 Sandeep Krishnan

如何设置标准LXC容器的DHCP IP?

在主机上创build一些容器时,例如: sudo lxc-create -n container1 -t ubuntu sudo lxc-create -n container2 -t ubuntu LXC系统为新的子网上的主机创buildIP地址,例如 lxc-ls –fancy NAME STATE IPV4 IPV6 AUTOSTART —————————————————- container1 RUNNING 10.0.3.143 – NO container2 RUNNING 10.0.3.12 – NO 问题是,分配这些地址的DHCP服务在哪里,我们如何根据服务器名称或MAC地址分配固定IP? 我们尝试编辑/etc/lxc/default.conf并添加: dhcp-host=container1,10.0.3.10 dhcp-host=container2,10.0.3.20 然后停止并启动容器,并执行sudo service lxc-net restart但这没有效果。 我可以在每个容器上编辑/etc/network/interfaces ,并且硬编码一个IP而不是使用DHCP,但是我宁愿控制它。 有没有办法做到这一点?

CGroups内存限制不起作用

我试图限制使用CGroups的LXC容器的内存使用情况,但我不能限制内存。 # lxc-cgroup -n maxdaniel981 memory.limit_in_bytes 134217728 lxc_container: failed to assign '134217728' value to 'memory.limit_in_bytes' for 'maxdaniel981' 然后我抬头看/proc/cgroups : # cat /proc/cgroups #subsys_name hierarchy num_cgroups enabled cpuset 2 3 1 cpu 3 3 1 cpuacct 3 3 1 memory 0 1 0 devices 4 3 1 freezer 5 3 1 net_cls 6 3 1 blkio […]

Bash shell脚本在通过标准input传递到LXC容器时乱序执行

我正在传递以下简单的shell脚本来打击LXC容器: apt-get update apt-get install postgresql -y sudo -u postgres psql -c 'create database dvdrental;' 我正在使用的实际命令是: cat sample.sh | lxc-attach -n test-container — /bin/bash 我这样做的原因,而不是上传脚本到容器中,并执行这种方式是这只是一个更复杂的应用程序,我们正在build设的理念的certificate,必须采取命令的标准input和运行在容器里。 除了一件事,它似乎工作得很好。 当postgresql仍在安装时,它会移到psql命令上,也就是说, […] Get:21 http://archive.ubuntu.com/ubuntu/ trusty/main ssl-cert all 1.0.33 [16.6 kB] Get:22 http://archive.ubuntu.com/ubuntu/ trusty-updates/main postgresql-common all 154ubuntu1 [103 kB] Get:23 http://archive.ubuntu.com/ubuntu/ trusty-updates/main postgresql-9.3 amd64 9.3.10-0ubuntu0.14.04 [2,669 kB] Get:24 http://archive.ubuntu.com/ubuntu/ trusty-updates/main […]

仅在用于CIFS / Samba共享的LXC容器中出现“挂载错误(13):权限被拒绝”

我有一个在Ubuntu 12.04主机下安装的samba共享: root:~# mount -t cifs -o credentials=/var/lib/lxc/vpn/rootfs/etc/samba/desktop.credentials //desktop/Media /media/Media 但是当我尝试在LXC容器中执行相同的安装时,也安装了cifs-utils软件包的Ubuntu 12.04时,我收到了一个权限错误: root:~# mount -t cifs -o credentials=/etc/samba/desktop.credentials //desktop/Media /media/Media mount error(13): Permission denied Refer to the mount.cifs(8) manual page (eg man mount.cifs) 这两个命令都以root身份运行。 为什么在容器中这是不同的,有没有办法让这个安装在容器下工作?

LXC容器模板?

是否有可能创build一个LXC容器,您只能将其作为模板进行复制? 如果是这样,那么如何正确地复制一个LXC容器?

iptables端口转发只适用于一定范围的IP

我正在使用LXC容器。 我的每个容器都有一个在10.0.3.0/24中的IP地址。 我希望进入我的主机在某个端口的数据包被redirect到一个容器,所以我使用这个规则: iptables -t nat -A PREROUTING -p tcp –dport 3000 -j DNAT –to-destination 10.0.3.4:3000 这允许做(外包)# – >主机:3000 – >容器:3000 它工作很好。 然而,当我在一个容器(不是在这个先前的规则中使用的),并且我想要访问另一个主机(如HOST2)在端口3000,我的数据包被redirect到我的容器。 它确实: (在容器包内)# – > HOST2:3000 – > HOST:3000 – > CONTAINER:3000 而不是(在容器包内)# – > HOST2:3000 – > HOST:3000 – > HOST2:3000 我试图改变我的规则 iptables -t nat -A PREROUTING -s 10.0.3.0/24 -p tcp –dport […]

在主机之间复制lxd容器

我已经在两个只能通过中间服务器进行通信的ubuntu主机上安装了lxd(我没有su权限)。 我在我的本地主机上创build了一个容器,现在希望在远程服务器上加载容器。 我咨询了lxc / lxd仓库中的basic.shtesting脚本,以确认我使用的是正确的方法(我发现一路上我误解了图像vs容器)。 我在本地主机上创build了一个容器testing,在其中安装了所有必要的东西,停止了它,发布了它,并执行了以下命令: lxc image export test 这给了我一个tarball 42cf01c53cb9e … 83e3c48.tar.gz (缩短在这里),如文档(我正在运行lxc和lxd版本2.0.0.beta3)中所述。 试图通过相同的主机导入该图像 lxc image import 42cf01c53cb9e…83e3c48.tar.gz –alias testimage 产生错误: exit status 2 (tar: metadata.yaml: Not found in archive) basic.sh脚本让我相信我正在遵循正确的路线(除了tar.gz vs tar.xz descrepancY)。 我能够导出标准图像,并获得一个.xz文件(当我获得他们使用lxd图像)。 例如, lxd-images import ubuntu –alias ubuntu lxc image export ubuntu 产生一个meta-ubuntu … tar.xz和ubuntu … tar.xz文件,可以导入(在不同的服务器上) lxc image import […]

在Ubuntu 14.04主机上启用Centos7 LXC容器上的SELinux

我试图设置一个LXC容器进行testing,在启用SELinux的情况下运行CentOS 7,以满足我试图运行的testing的要求。 尽pipe我的努力,我仍然无法得到getenforce的输出返回除“禁用”之外的任何东西。 容器最初使用以下lxc命令创build: sudo lxc-create -n <name> -t download — -d centos -r 7 -a amd64 我已经设置了容器configuration文件来使用fedora.common.conf来解决缓慢启动的问题,并且执行了一些其他的bootstrapping,但是我没有想到会影响SELinux。 我试过/检查以下尝试启用它(可能还有一些我忘记的东西!) 设置SELINUX =在/ etc / selinux / config中强制执行 删除模板指向/ usr / sbin / selinuxenabled的/ bin / false的符号链接并恢复原始文件 设置/ selinux /强制为1 安装了以前缺less的selinux-policy-targeted软件包 检查了我的内核支持SELinux 创build/.autorelabel来尝试重新标记文件系统,该文件系统在重启容器时看起来没有被拾取(文件仍然存在) 试图使用fixfiles手动重新标记为fs,这会导致错误,指出SELinux未启用。 我还没有在主机上启用SELinux,因为我非常确定我已经看到运行CentOS7的docker容器,它可以在没有安装或运行SELinux的主机的情况下运行它。 我search了一切我能想到的,并在这里search,找不到任何其他的build议,为什么我不能让SELinux在这个LXC容器内启用,任何人都可以帮忙吗? 我只是准备放弃并创build一个CentOS7主机来运行我的CentOS7容器,但我真的希望这不是必要的。

使用网桥和vlanconfiguration容器(仅限服务器?)

我在服务器上有两组lxc contianers,并且出于安全原因希望隔离它们的networkingstream量。 我将使用端口转发,因此每个容器都有独立的IP。 我知道我必须把两个小组划分,并且打算给每个小组29个。 我也假设我需要把每个子网放在它自己的vlan上。 但是我不知道如何安排Veth#,网桥,vlan和主机网卡,以及有什么select? 理想情况下,我想将vlans限制在服务器上,以便主机网卡从未加标签的路由器/防火墙接收转发的数据包。 然后,当它们从主机NIC通过任何桥接器和vlan传递到容器上的Veth#时,它们被标记并且不标记。 简而言之,我只想将每个子网与另一个子网隔离,同时允许将数据包从路由器转发到每个子网上的任何容器。 如果有一个更简单的方法,我会很高兴听到它。 PS我正在使用Ubuntu服务器12.04与它的lxcnetworking库。 我没有单独安装libvirt。 任何信息或build议非常感谢。