"'veth87VSIJ'를 'virbr0' 브리지에 연결할 수 없습니다: 해당 장치가 없습니다"

"'veth87VSIJ'를 'virbr0' 브리지에 연결할 수 없습니다: 해당 장치가 없습니다"

저는 가상 머신에서 Fedora 20을 사용하고 있으며 컨테이너 사용법을 배우려고 노력하고 있습니다. 컨테이너를 생성했지만 시작할 수 없습니다. 터미널 출력은 다음과 같습니다.

[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]# 

답변1

libvirtd가 설치되어 실행 중인지 확인하세요(libvirt 패키지를 통해). 예를 들어:

$ yum install -y libvirt
$ systemctl start libvirtd
$ brctl show
bridge name bridge id       STP enabled interfaces
virbr0      8000.fea2866efadb   yes     veth7ATCJK

답변2

  1. 네트워크 hwaddr 변경(구성 컨테이너 파일에서)
  2. 브리지의 IP를 설정하고 구성하세요.

그리고http://febru.soluvas.com/2015/03/solved-failed-to-attach-bridge-virbr0.html

답변3

에러 메시지

lxc-start: conf.c: instantiate_veth:2978 'veth87VSIJ'를 'virbr0' 브리지에 연결할 수 없습니다: 해당 장치가 없습니다

브리지 인터페이스가 시스템에 존재하지 않음을 명확하게 나타냅니다. 다음 명령을 사용하여 현재 사용 가능한 인터페이스를 확인할 수 있습니다.

구성된 경우

또는

IP 링크

현재의 경우 브리징이 활성화되어 있지 않기 때문에 알아야 할 또 다른 사항은 virbr0이 일반적으로 xen 또는 libvirtd와 같은 시각화 서비스와 연결된다는 것입니다. 따라서 가장 먼저 시도할 수 있는 것은 이들 중 하나를 시작하는 것입니다(Fedora 20에서는 libvirtd를 사용하고 있는 것 같습니다).

sudo systemctl libvirtd 시작

이 인터페이스가 활성화되지 않은 경우 간단히 수동으로 추가할 수 있지만 구성 충돌을 피하기 위해 이 작업을 수행하지 않는 것이 좋습니다.

제가 제안하고 싶은 더 나은 해결책은 완전히 다른 브리지를 사용하는 것입니다. 이를 통해 구성을 더 효과적으로 제어할 수 있습니다. 먼저 lxc-net 브리지 이름이 어디에 설정되어 있는지 확인해야 합니다./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

이것은 재정의됩니다/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

USE_LXC_BRIDGE="true"인 경우에만/etc/sysconfig/lxc(여기서는 그렇지 않습니다)

# 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

또는/etc/sysconfig/lxc-net그것이 존재한다면 (내 경우에는 아님). 내 경우에는 브리지 이름이lxcbr0그리고 lxc 브리지 구성을 사용하지 않습니다.

해결되면 다음 명령을 사용하여 새 브리지 인터페이스 구성을 생성합니다.

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
'

우리는 다음과 같이 시작합니다

sudo ifup lxcbr0

또한 lxc 및 lxc-net을 다시 시작해야 합니다.

sudo 시스템 ctl 중지 lxc

sudo systemctl 중지 lxc-net

sudo systemctl 시작 lxc-net

sudo systemctl lxc 시작

답변4

docker게스트 설치가 있는 경우 lxc에도 사용할 수 있습니다 docker0 bridge.

/var/lib/lxc/container/config컬렉션 중

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

& 방문자에게 파일에 고정 IP 주소 제공~에컨테이너:

/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

서비스를 활성화 lxc하면 게스트가 네트워크를 통해 자동으로 시작됩니다.

systemctl enable lxc.service

관련 정보