Moby: 来自守护进程的错误响应:无法在网桥上创建端点 (...):无法添加主机 (veth1d85371) <=> 沙箱 (vethbc264f6) 对接口:不支持操作。

创建于 2016-10-16  ·  22评论  ·  资料来源: moby/moby

我有一个新安装的 docker,但是当我无法执行容器时

docker run --rm hello-world                                                                                                                          
docker: Error response from daemon: failed to create endpoint jolly_kare on network bridge: failed to add the host (veth1d85371) <=> sandbox (vethbc264f6) pair interfaces: operation not supported.

Docker 信息是:

Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 1
Server Version: 1.12.2
Storage Driver: devicemapper
 Pool Name: docker-8:1-799432-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 14.09 MB
 Data Space Total: 107.4 GB
 Data Space Available: 21.34 GB
 Metadata Space Used: 585.7 kB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.147 GB
 Thin Pool Minimum Free Space: 10.74 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.77 (2012-10-15)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: host bridge overlay null
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options:
Kernel Version: 3.10.23-xxxx-std-ipv6-64-vps
Operating System: Ubuntu 14.04.5 LTS
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 3.854 GiB
Name: vps102867
ID: RTPT:KG2U:SH6J:5KS4:5S27:A57A:E6PV:425A:7KEF:UJKR:5WOG:FQBV
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No kernel memory limit support
Insecure Registries:
 127.0.0.0/8

我已经尝试删除/var/lib/docker/network/files/local-kv.db中提到的类似问题,但没有成功

arenetworking

最有用的评论

我看不出那里有任何问题。 我刚刚为那些使用 Arch Linux 的人留下了评论,所以他们知道更新内核后需要重新启动。

感谢您的澄清@thaJeztah。

所有22条评论

看起来您正在为 Ubuntu 14.04 运行非标准内核。 Ubuntu 14.04 附带内核 3.13。 您可以尝试使用标准内核吗? 您的内核可能缺少 docker 正常运行所需的模块; 您可以尝试运行此脚本以查看缺少的内容; https://github.com/docker/docker/blob/master/contrib/check-config.sh

糟糕...脚本的输出是

Generally Necessary:
- cgroup hierarchy: properly mounted [/sys/fs/cgroup]
- CONFIG_NAMESPACES: enabled
- CONFIG_NET_NS: enabled
- CONFIG_PID_NS: enabled
- CONFIG_IPC_NS: enabled
- CONFIG_UTS_NS: enabled
- CONFIG_DEVPTS_MULTIPLE_INSTANCES: enabled
- CONFIG_CGROUPS: enabled
- CONFIG_CGROUP_CPUACCT: enabled
- CONFIG_CGROUP_DEVICE: enabled
- CONFIG_CGROUP_FREEZER: enabled
- CONFIG_CGROUP_SCHED: enabled
- CONFIG_CPUSETS: enabled
- CONFIG_MEMCG: enabled
- CONFIG_KEYS: enabled
- CONFIG_VETH: missing
- CONFIG_BRIDGE: enabled
- CONFIG_BRIDGE_NETFILTER: enabled
- CONFIG_NF_NAT_IPV4: enabled
- CONFIG_IP_NF_FILTER: enabled
- CONFIG_IP_NF_TARGET_MASQUERADE: enabled
- CONFIG_NETFILTER_XT_MATCH_ADDRTYPE: enabled
- CONFIG_NETFILTER_XT_MATCH_CONNTRACK: enabled
- CONFIG_NETFILTER_XT_MATCH_IPVS: missing
- CONFIG_IP_NF_NAT: missing
- CONFIG_NF_NAT: enabled
- CONFIG_NF_NAT_NEEDED: enabled
- CONFIG_POSIX_MQUEUE: missing

Optional Features:
- CONFIG_USER_NS: missing
- CONFIG_SECCOMP: enabled
- CONFIG_CGROUP_PIDS: missing
- CONFIG_MEMCG_SWAP: enabled
- CONFIG_MEMCG_SWAP_ENABLED: enabled
- CONFIG_MEMCG_KMEM: missing
- CONFIG_RESOURCE_COUNTERS: enabled
- CONFIG_BLK_CGROUP: enabled
- CONFIG_BLK_DEV_THROTTLING: enabled
- CONFIG_IOSCHED_CFQ: enabled
- CONFIG_CFQ_GROUP_IOSCHED: enabled
- CONFIG_CGROUP_PERF: missing
- CONFIG_CGROUP_HUGETLB: missing
- CONFIG_NET_CLS_CGROUP: enabled
- CONFIG_NETPRIO_CGROUP: missing
- CONFIG_CFS_BANDWIDTH: enabled
- CONFIG_FAIR_GROUP_SCHED: enabled
- CONFIG_RT_GROUP_SCHED: enabled
- CONFIG_IP_VS: missing
- CONFIG_IP_VS_NFCT: missing
- CONFIG_IP_VS_RR: missing
- CONFIG_EXT3_FS: enabled
- CONFIG_EXT3_FS_XATTR: enabled
- CONFIG_EXT3_FS_POSIX_ACL: enabled
- CONFIG_EXT3_FS_SECURITY: enabled
- CONFIG_EXT4_FS: enabled
- CONFIG_EXT4_FS_POSIX_ACL: enabled
- CONFIG_EXT4_FS_SECURITY: enabled
- Network Drivers:
  - "overlay":
    - CONFIG_VXLAN: missing
      Optional (for encrypted networks):
      - CONFIG_CRYPTO: enabled
      - CONFIG_CRYPTO_AEAD: enabled
      - CONFIG_CRYPTO_GCM: missing
      - CONFIG_CRYPTO_SEQIV: missing
      - CONFIG_CRYPTO_GHASH: missing
      - CONFIG_XFRM: enabled
      - CONFIG_XFRM_USER: enabled
      - CONFIG_XFRM_ALGO: enabled
      - CONFIG_INET_ESP: enabled
      - CONFIG_INET_XFRM_MODE_TRANSPORT: enabled
  - "ipvlan":
    - CONFIG_IPVLAN: missing
  - "macvlan":
    - CONFIG_MACVLAN: missing
    - CONFIG_DUMMY: enabled
- Storage Drivers:
  - "aufs":
    - CONFIG_AUFS_FS: missing
  - "btrfs":
    - CONFIG_BTRFS_FS: enabled
    - CONFIG_BTRFS_FS_POSIX_ACL: enabled
  - "devicemapper":
    - CONFIG_BLK_DEV_DM: enabled
    - CONFIG_DM_THIN_PROVISIONING: enabled
  - "overlay":
    - CONFIG_OVERLAY_FS: missing
  - "zfs":
    - /dev/zfs: missing
    - zfs command: missing
    - zpool command: missing

Limits:
- /proc/sys/kernel/keys/root_maxkeys: 1000000

我想知道在非专用 ovh 的 vps 上进行内核更改有多安全

看起来缺少各种东西,也许最好联系 ovh 支持?

基于以上,我不认为这是 docker 中的错误,所以我会关闭这个 issue,但请继续在这里讨论

就我而言,每次更新 Linux 内核时都会出现该错误。 当我重新启动计算机时它消失了。

我正在使用 Arch Linux。

更新:

如果目前重启不可行,另一种方法是降级内核。

sudo pacman -U /var/cache/pacman/pkg/linux-$(uname -r | sed 's/-ARCH//')-x86_64.pkg.tar.xz

归功于@Nowaker看下面的评论

Arch linux 是一个滚动发行版,并附带了“前沿”版本的软件包。 正因为如此,众所周知,Arch 会定期中断 docker; 出于这个原因,我们不为 Arch 运送包裹。 最好向维护其软件包的 Arch linux 报告此问题

我看不出那里有任何问题。 我刚刚为那些使用 Arch Linux 的人留下了评论,所以他们知道更新内核后需要重新启动。

感谢您的澄清@thaJeztah。

感谢@whoan的回答!

@whoan对于 Arch Linux,更新内核后,旧内核模块将自动全部删除(替换为新版本内核模块)。 因此,如果您没有重新启动计算机,您将运行没有匹配内核模块的旧内核。 大多数 docker 命令会加载内核模块(如果它们还没有加载),但是你的旧内核再也找不到它的模块了。 这就是为什么每次更新 Linux 内核时都会出现该错误,并在重新启动计算机后消失。

内核模块目录在 /lib/modules/ 中。 下次更新内核之前,请备份旧的内核模块目录。 更新后,恢复旧的内核模块目录,即使不重新启动计算机也不会看到此错误。

我有同样的错误,但重新启动后不起作用。 所以我使用命令docker image rmdocker rm删除所有图像和容器。 然后docker工作正常。

我遇到这个问题是因为我正在运行一个没有虚拟以太网对设备选项的定制内核。 因此,如果您有自定义内核,请在运行make之前启用该选项。 你会在下面找到它:

Device Drivers -> Network device support -> Network core driver support

将其放在这里是因为这似乎是 Google 上针对此错误的第一个结果。 希望能帮助到你!

@whoan如果目前重启不可行,

sudo pacman -U /var/cache/pacman/pkg/linux-$(uname -r | sed 's/-ARCH//)'-x86_64.pkg.tar.xz

感谢@Nowaker的贡献。 我按照建议将其添加到我之前的评论中。

@Nowaker谢谢! 为未来的搜索者提供小错字修复:
sudo pacman -U /var/cache/pacman/pkg/linux-$(uname -r | sed 's/-ARCH//')-x86_64.pkg.tar.xz
(注意最后单引号和括号的交换位置)

谢谢@morancj。 我在我之前的评论中修复了它。

谢谢 whoan,这非常有帮助!

@tomas ,你能帮我看看这个问题吗? 我正在运行一个定制的内核。
这是docker无法在armv7l中运行的链接

明天我会试试你的方法,你提醒我。 多谢 。

@tomas ,感谢您在上面的回答,它解决了我的问题。 非常感谢。

脚本的输出: https :

我看到一些丢失的包,我们应该如何修复错误:
无法在网桥上创建端点 flamboyant_tereshkova:将接口 vethfb90d78 添加到网桥 docker0 失败:找不到网桥 docker0:路由 ip+net:没有这样的网络接口

警告:/proc/config.gz 不存在,正在搜索内核配置的其他路径...
信息:从 /boot/config-4.8.0-59-generic 读取内核配置...

一般需要:

  • cgroup 层次结构:正确挂载 [/sys/fs/cgroup]
  • apparmor:启用并安装工具
  • CONFIG_NAMESPACES:已启用
  • CONFIG_NET_NS:启用
  • CONFIG_PID_NS:启用
  • CONFIG_IPC_NS:启用
  • CONFIG_UTS_NS:启用
  • CONFIG_CGROUPS:启用
  • CONFIG_CGROUP_CPUACCT:启用
  • CONFIG_CGROUP_DEVICE:启用
  • CONFIG_CGROUP_FREEZER:启用
  • CONFIG_CGROUP_SCHED:启用
  • CONFIG_CPUSETS:启用
  • CONFIG_MEMCG:启用
  • CONFIG_KEYS:启用
  • CONFIG_VETH:启用(作为模块)
  • CONFIG_BRIDGE:启用(作为模块)
  • CONFIG_BRIDGE_NETFILTER:启用(作为模块)
  • CONFIG_NF_NAT_IPV4:启用(作为模块)
  • CONFIG_IP_NF_FILTER:启用(作为模块)
  • CONFIG_IP_NF_TARGET_MASQUERADE:启用(作为模块)
  • CONFIG_NETFILTER_XT_MATCH_ADDRTYPE:启用(作为模块)
  • CONFIG_NETFILTER_XT_MATCH_CONNTRACK:启用(作为模块)
  • CONFIG_NETFILTER_XT_MATCH_IPVS:启用(作为模块)
  • CONFIG_IP_NF_NAT:启用(作为模块)
  • CONFIG_NF_NAT:启用(作为模块)
  • CONFIG_NF_NAT_NEEDED:启用
  • CONFIG_POSIX_MQUEUE:启用

可选功能:

  • CONFIG_USER_NS:启用
  • CONFIG_SECCOMP:启用
  • CONFIG_CGROUP_PIDS:启用
  • CONFIG_MEMCG_SWAP:启用
  • CONFIG_MEMCG_SWAP_ENABLED:缺失
    (cgroup swap account 当前没有启用,你可以通过设置启动选项“swapaccount=1”来启用它)
  • CONFIG_LEGACY_VSYSCALL_EMULATE:启用
  • CONFIG_BLK_CGROUP:启用
  • CONFIG_BLK_DEV_THROTTLING:启用
  • CONFIG_IOSCHED_CFQ:启用
  • CONFIG_CFQ_GROUP_IOSCHED:启用
  • CONFIG_CGROUP_PERF:启用
  • CONFIG_CGROUP_HUGETLB:启用
  • CONFIG_NET_CLS_CGROUP:启用(作为模块)
  • CONFIG_CGROUP_NET_PRIO:启用
  • CONFIG_CFS_BANDWIDTH:启用
  • CONFIG_FAIR_GROUP_SCHED:启用
  • CONFIG_RT_GROUP_SCHED:缺失
  • CONFIG_IP_NF_TARGET_REDIRECT:启用(作为模块)
  • CONFIG_IP_VS:启用(作为模块)
  • CONFIG_IP_VS_NFCT:启用
  • CONFIG_IP_VS_PROTO_TCP:启用
  • CONFIG_IP_VS_PROTO_UDP:启用
  • CONFIG_IP_VS_RR:启用(作为模块)
  • CONFIG_EXT4_FS:启用
  • CONFIG_EXT4_FS_POSIX_ACL:启用
  • CONFIG_EXT4_FS_SECURITY:启用
  • 网络驱动程序:

    • “覆盖”:

    • CONFIG_VXLAN:启用(作为模块)

      可选(用于加密网络):



      • CONFIG_CRYPTO:启用


      • CONFIG_CRYPTO_AEAD:启用


      • CONFIG_CRYPTO_GCM:启用(作为模块)


      • CONFIG_CRYPTO_SEQIV:启用


      • CONFIG_CRYPTO_GHASH:启用(作为模块)


      • CONFIG_XFRM:启用


      • CONFIG_XFRM_USER:启用(作为模块)


      • CONFIG_XFRM_ALGO:启用(作为模块)


      • CONFIG_INET_ESP:启用(作为模块)


      • CONFIG_INET_XFRM_MODE_TRANSPORT:启用(作为模块)



    • “ipvlan”:

    • CONFIG_IPVLAN:启用(作为模块)

    • “macvlan”:

    • CONFIG_MACVLAN:启用(作为模块)

    • CONFIG_DUMMY:启用(作为模块)

    • “容器中的 ftp,tftp 客户端”:

    • CONFIG_NF_NAT_FTP:启用(作为模块)

    • CONFIG_NF_CONNTRACK_FTP:启用(作为模块)

    • CONFIG_NF_NAT_TFTP:启用(作为模块)

    • CONFIG_NF_CONNTRACK_TFTP:启用(作为模块)

  • 存储驱动程序:

    • “aufs”:

    • CONFIG_AUFS_FS:启用(作为模块)

    • “btrfs”:

    • CONFIG_BTRFS_FS:启用(作为模块)

    • CONFIG_BTRFS_FS_POSIX_ACL:启用

    • “设备映射器”:

    • CONFIG_BLK_DEV_DM:启用

    • CONFIG_DM_THIN_PROVISIONING:启用(作为模块)

    • “覆盖”:

    • CONFIG_OVERLAY_FS:启用(作为模块)

    • “zfs”:

    • /dev/zfs:缺失

    • zfs 命令:缺少

    • zpool 命令:缺少

限制:

  • /proc/sys/kernel/keys/root_maxkeys: 1000000

谁知道? 解决方案是将其关闭并重新打开。

似乎 Linux 从 Windows 复制了这个技巧

我应该为其他 Arch 用户补充一点,在我的情况下,重启是由于同一天的系统升级。 如果您在不重新启动的情况下升级了 arch,则 docker 似乎无法建立连接。

我的树莓派也有同样的问题。
重启解决了问题。

此页面是否有帮助?
0 / 5 - 0 等级