Articles of LXC

如何在“不共享”容器中启动外部程序,并发送文件描述符?

使用unshare或lxc-execute我可以创build单独的networking/安装/任何名称空间的环境。 但是从外面开始编程并不是那么简单。 通常使用network和sshd,我也使用UNIX套接字和socat执行shell来启动新的进程。 是否已经有一个程序,允许轻松地启动内部的应用程序? 预计客户端程序将连接到UNIX套接字并将(SCM_RIGHTS)stdin / stdout / stderr发送到服务器。 服务器预计将在非共享内部启动并接收argv,环境和fds并启动它们。 类似的东西: # unshare -nm /usr/local/bin/dived /var/run/myunshare.socket # # (Non-abstract unix sockets are preserved across "unshare -m") # dive /var/run/myunshare.socket ping 8.8.8.8 connect: Network is unreachable

lxc容器没有得到默认路由

我正在运行Ubuntu Precise。 我知道我的当前版本的lxc不支持网关/默认路由分配(lxc 0.7.5-3ubuntu67)。 我一直在尝试做几行来执行,以便可以在容器中设置默认路由: #!/bin/bash -x touch /root/route.txt netstat -rn 2>&1 >> /root/route.txt export defaultroute=`ifconfig eth0|grep Bcast|awk '{print $3}'|cut -d: -f2|awk -F. '{print $1"."$2"."$3".254"}'` /sbin/route add default gw $defaultroute 2>&1 >> /root/route.txt netstat -rn 2>&1 >> /root/route.txt 理论上很简单。 如果我能弄明白如何得到这个执行的话,我会被打断的。 我在rc.local的末尾插入了它。 我把它放到了ssh脚本中。 我已经将它附加到其他init脚本。 没有。 如果我在启动容器后执行这些命令,他们设置默认路由就好了。 我的容器configuration: lxc.network.type = veth lxc.network.link = br0 lxc.network.flags = up […]

将本地主机请求redirect到Linux容器

我在Ubuntu主机上运行了几个Linux容器,每个都运行一个webapp。 要访问webapps,我使用iptables转发端口: sudo iptables -t nat -A PREROUTING -p tcp –dport <port> -j DNAT –to-destination #<container_ip>:<port> 如果stream量来自我的主机之外 ,这很好。 如果请求由本地主机完成,则不起作用: curl <host_ip>:<port> #works (from outside the host) curl <container_ip>:<port> #works (from inside the host) curl 127.0.0.1:<port> #doesn't work (from inside the host) 我知道来自本地主机的数据包不经过iptables DNAT规则,这就是为什么它不起作用。 有没有办法得到这个工作?

与本地dhcp和外部ipv6双桥问题的lxc容器联网

我想在所有容器上使用外部ipv6,而只在主机上使用外部ipv4。 我正在使用Ubuntu 12.04 64位。 对于容器上的ipv4,我使用lxc安装附带的DHCP。 我得到了设置工作,但我不知道这是正确的。 你们可以点亮一下吗? 在我的容器主机上,我使用: auto lo iface lo inet loopback address 127.0.0.1 netmask 255.0.0.0 auto eth0 iface eth0 inet manual auto br-lxc iface br-lxc inet static address ipv4 netmask 255.255.255.0 gateway ipv4 gw bridge_ports eth0 iface br-lxc inet6 static address exte:rnal::ipv6 netmask 48 gateway exte:rnal:ipv6:gw 在我的容器configuration中: lxc.network.type= veth lxc.network.flags= up lxc.network.link= […]

lxc容器不启动,因为 – lxc_conf – 无法设置控制台

我使用Ubuntu的12.04服务器与所有更新我重新启动lxc容器的命令在shell中:“重新启动” lxc版本是:1.0.0〜alpha1.0 + master〜20130930-1830-0ubuntu1〜ppa1〜precise1 #uname -a Linux zeus 3.5.0-34-generic#55〜precise1-Ubuntu SMP Fri Jun 7 16:25:50 UTC 2013 x86_64 x86_64 x86_64 GNU / Linux 它并没有开始。 这个lxc容器的日志文件是: tail -f /var/log/lxc/redmine.log lxc-start 1380778101.754错误lxc_conf – 无法为“redmine”设置控制台 lxc-start 1380778101.754错误lxc_start – 未能设置容器 lxc-start 1380778101.755错误lxc_sync – 无效的序列号1.预计2 lxc-start 1380778101.790错误lxc_start – 未能产生'redmine' lxc-start 1380778107.825错误lxc_conf – 只读文件系统 – 错误解除链接/ usr / lib / x86_64-linux-gnu / […]

dnsmasq和lxc与通配符DNS子域名

我正在使用LXC创build一个新的容器。 他们都使用dnsmasq与DHCP获取他们的IP地址,并有本地DNS服务器。 我在dnsmasq中设置了一个域.lxc。 所以每个容器都会得到DNS地址.lxc。 但我没有find任何解决scheme如何支持子域的任何..lxc。 我只能手动添加一行到dnsmasqconfiguration address=/.server.mydomain.com/192.168.0.3 有没有自动的方式,所以我不需要为每个新的容器,并重新启动DHCP服务器?

如何将stream程从一个名称空间转移到其他名称空间?

有什么可用的方法,在Linux中将进程/进程组从一个名称空间移动到另一个名称空间? 我的意思是通过一些包的命令的方法或它可以通过setns() ? 例如我有一个名字空间中的当前会话进程和一些不同名字空间中的lxc容器的其他进程,所以我想在该容器的cgroup中运行(例如链接)(这很容易做到与cgexec),然后将其移动到容器的名称空间,因为我必须在容器中运行这个过程,而不是在这个过程中执行它。 可以这样做,或者在Linux中是不可能的?

LXC容器在不同服务器上的行为有所不同

我有两台物理服务器A和B.我想从Ubuntu 12.04升级到14.04。 这里是我目前的设置(如果我没有在这里的任何信息,让我知道,我会添加它): 服务器A: Ubuntu 12.04 RAID和LVM上的ext4 lxc 0.75 服务器B: Ubuntu 12.04 raid1中的btrfs lxc 1.04 两台服务器在同一个vlan上,并且容器在同一个networking上。 现在是怪异的部分。 我有一个运行apache2和drupal网页的Debian容器。 当我将这个容器从服务器A移到服务器B时,网页被破坏了。 我把这个容器从A转移到了B # this works (I think) and it's just so I can get sudo access # without allowing root ssh login # –numeric-ids is here so the ownership remains the same inside the container # without […]

在linux容器之间共享串口

我需要在两个或多个linux容器之间共享一个串行端口。 LXC由主机linux产生。 我探索了socat的选项,其中主机将打开访客容器将连接的TCP连接并将其虚拟ttys映射到该TCP连接。 而且我也想提供一种方法来识别服务器上的客户端,主机可以根据这些客户端切换实际写入主机tty的连接。 我不确定这是否会在所有情况下飞行,所以请与有学问的人员核对,看看是否有任何其他解决scheme,或build议的解决scheme,甚至工作。

Centos lxc容器不会在Ubuntu 14.10上启动

我正在尝试在Ubuntu 14.10 Utopic和Ubuntu 14.04中运行Centos容器。 我用几种不同的方式创build了容器,不pipe它不会启动并吐出这些行: # lxc-start -n centos1 -F init: Failed to spawn lxc-sysinit pre-start process: unable to set priority: Permission denied init: Failed to spawn rcS pre-start process: unable to set priority: Permission denied init: Failed to spawn rcS post-stop process: unable to set priority: Permission denied 我在这里和那里search,我发现了一些东西。 我尝试在configuration中逐一添加这些行,并全部添加: lxc.aa_allow_incomplete = 1 lxc.aa_profile […]