You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器内核与Ubuntu主机内核不一致的原因及解决方法咨询

Docker容器内核与Ubuntu主机内核不一致的原因及解决方法咨询

嘿,我来帮你拆解这个问题!你在Ubuntu 22.04主机(内核5.19.0-35-generic)上运行Docker,拉取ubuntu:18.04镜像后,发现容器内的内核是5.15.49-linuxkit,这和你认知里“Docker容器共享主机内核”的情况不符,对吧?这其实是安装方式导致的,下面给你详细说:

原因分析

你大概率是安装了Docker Desktop for Linux,而不是原生的Docker Engine。Docker Desktop不管是在Windows、Mac还是Linux平台,本质上都是在一个基于LinuxKit的轻量虚拟机里运行Docker服务的——也就是说,你的容器其实是跑在这个虚拟机的内核上,而不是直接使用Ubuntu主机的原生内核,所以才会看到linuxkit相关的内核版本。

解决办法

如果想要容器直接使用主机的内核,你需要卸载Docker Desktop,改用原生的Docker Engine,步骤如下:

  • 首先卸载Docker Desktop:
    1. 停止Docker Desktop服务:systemctl --user stop docker-desktop
    2. 执行卸载命令清理包:sudo apt purge docker-desktop
    3. 删除残留配置文件:rm -r ~/.docker/desktop
  • 然后安装原生Docker Engine:
    1. 卸载旧的Docker相关残留包(如果有的话):sudo apt-get remove docker docker-engine docker.io containerd runc
    2. 设置Docker官方APT源:
      sudo apt-get update
      sudo apt-get install ca-certificates curl gnupg
      sudo install -m 0755 -d /etc/apt/keyrings
      curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
      sudo chmod a+r /etc/apt/keyrings/docker.gpg
      echo \
        "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
        "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
        sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
      
    3. 安装Docker Engine及配套组件:sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • 启动Docker服务:sudo systemctl start docker
  • 此时再运行ubuntu:18.04容器,执行uname -r就能看到和主机一致的5.19.0-35-generic内核了。

补充说明

Docker Desktop用LinuxKit虚拟机是为了提供跨平台统一的体验,还附带了图形化管理界面、文件共享优化等功能,但代价就是容器无法直接复用主机内核;而原生Docker Engine是直接与主机内核交互的,完全符合你认知中“容器共享主机内核”的特性。

备注:内容来源于stack exchange,提问作者akastack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 09:19:14