私は仮想マシンで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
- ネットワークhwaddrの変更(構成コンテナファイルから)
- ブリッジの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リンク
現時点では、ブリッジングが有効になっていないため、知っておくべきもう1つのことは、virbr0が通常xenやlibvirtdなどの可視化サービスに関連付けられていることです。したがって、最初に試すことができるのは、これらのうちの1つを開始することです(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