无法在 CentOS 7 上的 LXC 容器内执行“yum install”

无法在 CentOS 7 上的 LXC 容器内执行“yum install”

我正在尝试在 CentOS 7 中创建 CentOS 容器并托管我的应用程序。但我无法在容器内安装任何东西。

如果我这样做' yum -y install nodejs'我得到以下错误

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.fibergrid.in
 * extras: mirror.fibergrid.in
 * updates: mirror.fibergrid.in
No package nodejs available.
Error: Nothing to do

发现集装箱内部无法上网,但是集装箱外部可以上网。

答案1

我会重新措辞你的问题我无法在容器内上网并调查类似的

您可以尝试以下一些建议:

service docker restart

pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
docker -d

更新:由于您后来指定您正在使用 lxc,因此我会搜索“lxc 容器内没有互联网连接”。对于另一个用户(他更详细地发布了他的配置,请参阅这里)是防火墙问题。他不得不补充一点:

-A FORWARD -s 10.0.3.0/24 -o eth0 -j ACCEPT                                     
-A FORWARD -d 10.0.3.0/24 -o lxcbr0 -j ACCEPT

更新:我设置了一个 CentOS 7 系统来测试这一点,并且能够毫不费力地在其中创建一个 CentOS lxc 容器,如下所示这些说明。它具有外部连接功能,无需调整配置。

yum install epel-release
yum install debootstrap perl libvirt
yum install lxc lxc-templates
systemctl start lxc.service
systemctl start libvirtd 
lxc-create -n <name> -t centos
lxc-start -n <name>
yum install epel-release
yum -y install nodejs

以下是容器内部的最终网络配置:

ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
5: eth0@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether fe:9d:63:f7:72:ec brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.122.153/24 brd 192.168.122.255 scope global dynamic eth0
      valid_lft 3437sec preferred_lft 3437sec
    inet6 fe80::fc9d:63ff:fef7:72ec/64 scope link
      valid_lft forever preferred_lft forever

cat /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
nameserver 192.168.122.1

 ip route
 default via 192.168.122.1 dev eth0
 169.254.0.0/16 dev eth0  scope link  metric 1005
 192.168.122.0/24 dev eth0  proto kernel  scope link  src 192.168.122.153

 iptables -L
 Chain INPUT (policy ACCEPT)
 target     prot opt source               destination
 Chain FORWARD (policy ACCEPT)
 target     prot opt source               destination
 Chain OUTPUT (policy ACCEPT)
 target     prot opt source               destination

如果您的 lxc 容器与我的不同,请指出差异;否则,问题更可能出在主机配置上。要知道是否是防火墙的问题,我会允许所有流量(暂时依赖外部防火墙)并再次检查。此外,请确保您有前面提到的转发规则。在我的 CentOS 主机上,我发现了以下自动创建的 IPTABLES 条目:

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED
ACCEPT     all  --  192.168.122.0/24     0.0.0.0/0

答案2

  • 首先检查IP连通性

尝试 ping 命令显示的主接口 IP 。从0.0.0.0 路由旁边的命令输出 IPifconfig检查默认网关 IP 。尝试 ping 一下。ip route

  • 如果 ping 正常,则检查 DNS 配置:

运行命令:

#vi /etc/reslov/conf

nameserver:8.8.8.8
nameserver:8.8.4.4

将名称服务器设置为主机接口 IP 或本地路由器 DNS 服务器地址。

  • 重启虚拟机网络接口

/etc/init.d/network restart

答案3

检查您的互联网连接并启用 EPEL 存储库,如果没有启用:
https://support.rackspace.com/how-to/install-epel-and-additional-repositories-on-centos-and-red-hat/

然后:

$ sudo yum install npm  
$ node -v    

或者也可以关注这个文档:
http://lexsheehan.blogspot.in/2013/03/how-to-install-nodejs-on-centos.html

相关内容