“falhou ao anexar 'veth87VSIJ' à ponte 'virbr0': Nenhum dispositivo desse tipo”

5

Estou usando o Fedora 20 em uma VM e tentando aprender a usar contêineres. Eu criei um contêiner, mas não consigo iniciá-lo. Aqui está a saída do terminal:

[root@localhost home]# lxc-start -n test
lxc-start: conf.c: instantiate_veth: 2978 failed to attach 'veth87VSIJ' to the bridge 'virbr0': No such device
lxc-start: conf.c: lxc_create_network: 3261 failed to create netdev
lxc-start: start.c: lxc_spawn: 826 failed to create the network
lxc-start: start.c: __lxc_start: 1080 failed to spawn 'test'
lxc-start: lxc_start.c: main: 342 The container failed to start.
lxc-start: lxc_start.c: main: 346 Additional information can be obtained by setting the --logfile and --logpriority options.
[root@localhost home]# 
    
por Susan Elizabeth King Tuvell 15.01.2015 / 23:17

4 respostas

10

Certifique-se de que o libvirtd esteja instalado e em execução (através do pacote libvirt). por exemplo:

$ yum install -y libvirt
$ systemctl start libvirtd
$ brctl show
bridge name bridge id       STP enabled interfaces
virbr0      8000.fea2866efadb   yes     veth7ATCJK
    
por 19.01.2015 / 12:50
1
  1. altere sua rede hwaddr (no arquivo contêiner de configuração)
  2. defina o ip da sua bridge e invente

é o mesmo com o link

    
por 29.03.2015 / 17:50
1

A mensagem de erro

lxc-start: conf.c: instantiate_veth: 2978 failed to attach 'veth87VSIJ' to the bridge 'virbr0': No such device

indica claramente a ausência da interface da bridge no seu sistema. Você pode verificar suas interfaces atuais disponíveis usando os comandos

ifconfig

ou

ip link

No caso atual, porque você não tem a ponte ativada, outra coisa a saber é que o virbr0 é geralmente associado a serviços de visualização como xen ou libvirtd. Então a primeira coisa que você pode tentar é começar um desses (estando no fedora 20 eu acho que você está usando o libvirtd)

sudo systemctl start libvirtd

Se a interface não estiver ativada, você pode simplesmente adicioná-la manualmente, mas aconselho strongmente contra isso para evitar conflitos de configuração.

A melhor solução que posso sugerir é usar uma ponte diferente, já que ela também lhe dará mais controle sobre essa configuração. Primeiro você tem que identificar onde o nome da ponte lxc-net está definido, examinando o / usr / libexec / lxc / lxc-net

#!/bin/sh -

distrosysconfdir="/etc/sysconfig"
varrun="/run/lxc"
varlib="/var/lib"

# These can be overridden in /etc/sysconfig/lxc
#   or in /etc/sysconfig/lxc-net

USE_LXC_BRIDGE="true"
LXC_BRIDGE="lxcbr0"
LXC_ADDR="10.0.3.1"
LXC_NETMASK="255.255.255.0"
LXC_NETWORK="10.0.3.0/24"
LXC_DHCP_RANGE="10.0.3.2,10.0.3.254"
LXC_DHCP_MAX="253"
LXC_DHCP_CONFILE=""
LXC_DOMAIN=""

LXC_IPV6_ADDR=""
LXC_IPV6_MASK=""
LXC_IPV6_NETWORK=""
LXC_IPV6_NAT="false"

[ ! -f $distrosysconfdir/lxc ] || . $distrosysconfdir/lxc

que será sobrescrito por /etc/lxc/default.conf

lxc.network.type = veth
lxc.network.link = lxcbr0
lxc.network.flags = up
lxc.network.hwaddr = 00:16:3e:xx:xx:xx

somente se USE_LXC_BRIDGE="true" em / etc / sysconfig / lxc (não é o caso aqui)

# LXC_AUTO - whether or not to start containers at boot
LXC_AUTO="true"

# BOOTGROUPS - What groups should start on bootup?
#   Comma separated list of groups.
#   Leading comma, trailing comma or embedded double
#   comma indicates when the NULL group should be run.
# Example (default): boot the onboot group first then the NULL group
BOOTGROUPS="onboot,"

# SHUTDOWNDELAY - Wait time for a container to shut down.
#   Container shutdown can result in lengthy system
#   shutdown times.  Even 5 seconds per container can be
#   too long.
SHUTDOWNDELAY=5

# OPTIONS can be used for anything else.
#   If you want to boot everything then
#   options can be "-a" or "-a -A".
OPTIONS=

# STOPOPTS are stop options.  The can be used for anything else to stop.
#   If you want to kill containers fast, use -k
STOPOPTS="-a -A -s"

USE_LXC_BRIDGE="false"  # overridden in lxc-net

[ ! -f /etc/sysconfig/lxc-net ] || . /etc/sysconfig/lxc-net

ou / etc / sysconfig / lxc-net se existir (não no meu caso). No meu caso, o nome da ponte é lxcbr0 e não estará usando a configuração da ponte lxc.

Com isso resolvido, criamos a nova configuração de interface de ponte com:

sudo sh -c '
cat > /etc/sysconfig/network-scripts/ifcfg-lxcbr0 <<EOF
DEVICE="lxcbr0"
BOOTPROTO="static"
IPADDR="192.168.1.250"
NETMASK="255.255.255.0"
ONBOOT="yes"
TYPE="Bridge"
NM_CONTROLLED="no"
EOF
'

e começamos com

sudo ifup lxcbr0

você também terá que reiniciar lxc e lxc-net

sudo systemctl stop lxc

sudo systemctl stop lxc-net

sudo systemctl start lxc-net

sudo systemctl start lxc

    
por 08.11.2016 / 23:09
0

Se você tiver docker installed lxc guests, também poderá usar o docker0 bridge :

Em /var/lib/lxc/container/config set

lxc.network.link = docker0
lxc.start.auto = 1

& dê ao convidado um endereço IP estático no arquivo dentro do container:

/etc/sysconfig/network-scripts/ifcfg-eth0 

DEVICE=eth0
ONBOOT=yes
HOSTNAME=
NM_CONTROLLED=no
TYPE=Ethernet
MTU=
DHCP_HOSTNAME=centos6
BOOTPROTO="static"
IPADDR=172.17.xx.xx
NETMASK=255.255.255.0
GATEWAY=172.17.xx.1    # check ifconfig on the host for the docker0 ip

ative o lxc service & os convidados começarão automaticamente com a rede:

systemctl enable lxc.service
    
por 12.02.2015 / 07:19

Tags