centos 安装后Docker无法启动,显示“回环连接失败”

hujrc8aj  于 2022-11-07  发布在  Docker
关注(0)|答案(3)|浏览(350)

我已经从存储库安装了docker-ce,并遵循以下说明:
https://docs.docker.com/install/linux/docker-ce/centos/
尝试启动Docker时收到错误:
由于控制进程退出并返回错误代码,docker.service的作业失败。有关详细信息,请参阅“systemctl status docker.service”和“journalctl -xe”。
journalctl具有以下内容:

...
dockerd[3647]: time="2018-02-05T14:47:05-08:00" level=info msg="containerd successfully booted in 0.002946s" module=containerd
dockerd[3647]: time="2018-02-05T14:47:05.456552594-08:00" level=error msg="There are no more loopback devices available."
dockerd[3647]: time="2018-02-05T14:47:05.456585240-08:00" level=error msg="[graphdriver] prior storage driver devicemapper failed: loopback attach failed"
dockerd[3647]: Error starting daemon: error initializing graphdriver: loopback attach failed
systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
systemd[1]: Failed to start Docker Application Container Engine.

我看过一些关于使用环回设备以外的东西的文章,但据我所知,这些文章表明需要进行优化-并不意味着初始启动应该失败。
CentOS Linux版本7.4.1708(核心)

yvfmudvl

yvfmudvl1#

如果您在Xen上的VM中运行Linux,则需要安装内核并使用pygrub(请参见https://wiki.debian.org/PyGrub),并更新到docker版本19.03.0。

安装pygrub

1.在您的虚拟机中执行:

mkdir /boot/grub
apt-get install -y linux-image-amd64
cat > /boot/grub/menu.lst << EOF

default         0
timeout         2

title           Debian GNU/Linux
root            (hd0,0)
kernel          /vmlinuz root=/dev/xvda2 ro
initrd          /initrd.img

title           Debian GNU/Linux (recovery mode)
root            (hd0,0)
kernel          /vmlinuz root=/dev/xvda2 ro single
initrd          /initrd.img

EOF

2.暂停虚拟机,例如:

xen destroy vm01

3.编辑您xen配置

例如,对于DOM0中的VM /etc/xen/vm01.cfg(注解掉前两行并添加后三行):


# kernel      = '/boot/vmlinuz-4.9.0-9-amd64'

# ramdisk     = '/boot/initrd.img-4.9.0-9-amd64'

extra       = 'elevator=noop'
bootloader  = '/usr/lib/xen-4.8/bin/pygrub'
bootloader_args = [ '--kernel=/vmlinuz', '--ramdisk=/initrd.img', ]

4.启动虚拟机:

xen create /etc/xen/vm01.cfg
qrjkbowd

qrjkbowd2#

我在同一台Debian XEN 4.8主机上的Debian 9 VM和Debian 8 VM中遇到了同样的问题。
环回似乎不存在:


# losetup -f

losetup: cannot find an unused loop device: No such device

您可以使用


# !/bin/bash

ensure_loop(){
  num="$1"
  dev="/dev/loop$num"
  if test -b "$dev"; then
    echo "$dev is a usable loop device."
    return 0
  fi
  echo "Attempting to create $dev for docker ..."
  if ! mknod -m660 $dev b 7 $num; then
    echo "Failed to create $dev!" 1>&2
    return 3
  fi
  return 0
}
ensure_loop 0
ensure_loop 0

但这只是找到正确解的一个提示,它并没有把它完全解决,现在既然/dev/loop0存在,我就有了错误:

Error opening loopback device: open /dev/loop0: no such device or address
[graphdriver] prior storage driver devicemapper failed: loopback attach failed

更新:

我安装了apt-get install docker-ce docker-ce-cli containerd.io,就像在最新的文档中描述的那样,现在有了最新版本:

$ docker --version
Docker version 19.03.0, build aeac9490dc

还是同一个问题:

failed to start daemon: error initializing graphdriver: loopback attach failed

这是完整日志:

level=info msg="Starting up"
level=warning msg="failed to rename /var/lib/docker/tmp for background deletion: rename /var/lib/docker/tmp 
/var/lib/docker/tmp-old: file exists. Deleting synchronously"
level=info msg="parsed scheme: \"unix\"" module=grpc
level=info msg="scheme \"unix\" not registered, fallback to default scheme" module=grpc
level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock 0  <nil>}
] }" module=grpc
level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc0005e8660, CONNECTING" module=grpc
level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc0005e8660, READY" module=grpc
level=info msg="parsed scheme: \"unix\"" module=grpc
level=info msg="scheme \"unix\" not registered, fallback to default scheme" module=grpc
level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock 0  <nil>}
] }" module=grpc
level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc0007f5b10, CONNECTING" module=grpc
level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc0007f5b10, READY" module=grpc
level=error msg="There are no more loopback devices available."
level=error msg="[graphdriver] prior storage driver devicemapper failed: loopback attach failed"
failed to start daemon: error initializing graphdriver: loopback attach failed

更新2:

最后我发现,VM中缺少pygrub,这似乎是某个版本以来的新依赖项。
这个答案是一个死胡同,我添加了另一个答案,但我离开这里的其他用户,有一个不同的问题,以获得一些提示。

1u4esq0p

1u4esq0p3#

我也遇到过这个问题。我解决了这个问题!
1.在我的VMWare工作站中,VM有两个虚拟网络接口。
1.我删除了其中一个虚拟网络接口,只保留了一个。
1.启动VMWare工作站,启动Docker服务,工作成功!
我在CentOS7.6(1810)上安装了Docker,但是当我启动Docker时:#systemctl启动停靠程序
Docker启动失败。

日志ctl-xe

它会显示一些消息,如“启动守护进程:初始化图形驱动程序时出错:环回连接失败”。

相关问题