【发布时间】:2015-03-03 20:04:15
【问题描述】:
我一直在研究 LXC 容器,我想知道是否可以像普通 VPS 一样使用 LXC 容器?
我的意思是;
- 如何为 LXC 容器分配外部 IP 地址?
- 如何直接通过 ssh 进入 LXC 容器?
我对 LXC 容器很陌生,所以如果有任何其他我应该注意的差异,请告诉我。
【问题讨论】:
标签: linux containers vps lxc
我一直在研究 LXC 容器,我想知道是否可以像普通 VPS 一样使用 LXC 容器?
我的意思是;
我对 LXC 容器很陌生,所以如果有任何其他我应该注意的差异,请告诉我。
【问题讨论】:
标签: linux containers vps lxc
lxc-create -t download -n cn_name
lxc-start -n cn_name -d
lxc-attach -n cn_name
然后在容器 cn_name 中安装 openssh 服务器,以便您可以使用 ssh 然后重新启动它或重新启动 ssh 服务。
要使任何容器“服务”对世界可用,请配置从主机到容器的端口转发。
例如,如果您在容器中有 Web 服务器,要将端口 80 从主机 ip 192.168.1.1 转发到 ip 10.0.3.1 的容器,您可以使用下面的 iptables 规则。
iptables -t nat -I PREROUTING -i eth0 -p TCP -d 191.168.1.1/32 --dport 80 -j DNAT --to-destination 10.0.3.1:80
现在容器的 80 端口上的 Web 服务器将可以通过主机操作系统的 80 端口访问。
【讨论】:
听起来您想要将主机 NIC 桥接到容器。在这种情况下,您需要做的第一件事就是创建一座桥梁。首先确保系统上安装了 bridge-utils,然后打开 /etc/networking/interfaces 进行编辑并更改它:
auto eth0
iface eth0 inet dhcp
到这里:
auto br0
iface br0 inet dhcp
bridge-interfaces eth0
bridge-ports eth0
up ifconfig eth0 up
iface eth0 inet manual
如果您的网卡未命名为 eth0,则应将 eth0 替换为您的网卡名称(我的网卡名为 enp5s0)。完成更改后,您可以通过发出命令来启动网桥
sudo ifup br0
假设一切顺利,您应该保持互联网访问,甚至您的 ssh 会话也应该在此过程中保持在线。我建议您对主机进行物理访问,因为搞砸上述步骤可能会阻止主机访问 Internet。您可以通过运行 ifconfig 并检查 br0 是否有分配的 IP 地址而 eth0 没有,来验证您的设置是否正确。
设置完成后,打开 /etc/lxc/default.conf 并更改
lxc.network.link = lxcbr0
到
lxc.network.link = br0
就是这样。您启动的任何容器都将自动桥接到 eth0,并且将有效地存在于与主机相同的 LAN 上。此时,您可以安装 ssh(如果尚未安装),然后使用新分配的 IP 地址将 ssh 安装到容器中。
"Converting eth0 to br0 and getting all your LXC or LXD onto your LAN"
【讨论】: