4

Я пытаюсь создать CentOS-контейнер внутри CentOS 7 и разместить мое приложение. Но я не могу установить что-либо внутри контейнера.

Если я сделаю ' 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

Обнаружено, что Интернет не доступен внутри контейнера, но вне контейнера Интернет доступен.

3 ответа3

3

Я бы перефразировал ваш вопрос:я не могу получить интернет в контейнере и посмотреть на подобные.

Некоторые предложения, которые вы можете попробовать:

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
0

Проверьте подключение к Интернету и включите репозиторий 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

0
  • Сначала проверьте IP-соединение

Попробуйте пропинговать IP-интерфейс домашнего интерфейса, показанный командой ifconfig . Проверьте IP-адрес шлюза по умолчанию в IP- адресе команды ip route рядом с 0.0.0.0 route. Попробуйте пинговать это.

  • Если пинги в порядке, проверьте конфигурацию DNS:

Команда запуска:

#vi /etc/reslov/conf

nameserver:8.8.8.8
nameserver:8.8.4.4

Установите для сервера имен IP-адрес интерфейса хоста или адрес DNS-сервера локального маршрутизатора.

  • Перезапустите сетевой интерфейс виртуальной машины.

/etc/init.d/network restart

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .