![无法在 CentOS 7 上的 LXC 容器内执行“yum install”](https://linux22.com/image/1523648/%E6%97%A0%E6%B3%95%E5%9C%A8%20CentOS%207%20%E4%B8%8A%E7%9A%84%20LXC%20%E5%AE%B9%E5%99%A8%E5%86%85%E6%89%A7%E8%A1%8C%E2%80%9Cyum%20install%E2%80%9D.png)
我正在尝试在 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