Docker正在运行。Docker桌面显示“Docker桌面已停止...”。

14

我已经按照这个指南在我的Ubuntu 20.04 VM上安装了Docker和Docker Desktop:

https://linuxiac.com/how-to-install-docker-desktop-on-ubuntu/

所有的东西都在运行,但是我的Docker桌面应用程序似乎无法连接到Docker本身。

service docker status 返回:

 docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-05-13 14:49:12 PDT; 4 days ago
TriggeredBy:  docker.socket
       Docs: https://docs.docker.com
   Main PID: 1086 (dockerd)
      Tasks: 18
     Memory: 73.0M
     CGroup: /system.slice/docker.service
             └─1086 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Warning: some journal files were not opened due to insufficient permissions.

然而,当我尝试在Docker桌面上配置东西时,会出现以下情况。当我点击设置时,会出现一个无限加载的旋转器。

docker desktop error

我已经尝试过

  1. 我使用sudo service docker stop / start重新启动了docker。

  2. 我点击了Ubuntu桌面右上角的Docker Desktop下拉菜单中的重启按钮。

  3. 我将我的用户加入了docker组。

有什么调试步骤可以采取吗?我有没有漏掉的明显事项?

谢谢!

5个回答

13

我在Debian 11和Docker Desktop 4.8.1上遇到了同样的问题。

  1. 如果您正在使用虚拟机中的Linux,请验证虚拟化支持。Docker Desktop运行需要KVM支持的虚拟机。

https://docs.docker.com/desktop/linux/install/#kvm-virtualization-support

  1. 如果您正在使用VMware,则需要启用CPU计数器。

https://github.com/canonical/multipass/issues/1085

  1. 通过运行以下命令验证:

    egrep -c '(svm|vmx)' /proc/cpuinfo

  2. 您需要停止并禁用Docker。

$ sudo service docker stop
$ sudo systemctl disable docker.service
$ sudo systemctl disable docker.socket

然后,重新启动你的Linux和Docker桌面。

另外,如果你以root用户身份运行docker ps,你将不使用Docker桌面,而是有另一个容器列表。

  • 如果你更改了“设置->资源->高级:磁盘映像位置”,你不能删除默认文件1.8G => home/YOUR_USER/.docker/desktop/vms/0/data/Docker.raw

    你可以更改路径,但需要保持该文件在那个位置。

  • enter image description here

    恢复出厂设置 enter image description here

    重启Docker桌面

    enter image description here

    重启电脑后Docker服务状态

    enter image description here

    完整历史记录:

    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    sudo usermod -aG docker YOUR_USER
    sudo apt install gnome-terminal
    sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virtinst libvirt-daemon virt-manager -y
    sudo usermod -aG kvm YOUR_USER
    sudo apt autoremove
    sudo apt install ./docker-desktop-4.8.1-amd64.deb
    sudo systemctl disable docker.service
    sudo systemctl disable docker.socket
    

    测试VirtualBox虚拟机 - Ubuntu 20.04

    输入图片描述


    然后,最后的救命稻草...恢复出厂设置按钮。(在停止和禁用Docker的情况下)- 图像已添加 - Mate
    我也运行了sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils。 - Cyrus
    这是我的日志: https://gist.github.com/cyruscuenca/197335938aba3e24b14f458602516075在启动Docker桌面版之前,我应该运行Docker服务吗? - Cyrus
    3
    放松点!我按照官方文档进行操作:https://docs.docker.com/desktop/linux/install/ubuntu/。 - Mate
    1
    嗨@Mate,在安装了全新的Ubuntu 20之后,docker-desktop运行得非常完美,感谢您的友善回复。 - Partab Saifuddin Zakir
    显示剩余15条评论

    10

    我在主机为Windows 11且使用Docker Desktop 4.9.0的Ubuntu 22.04虚拟机中遇到了相同的问题。

    如果你在使用VirtualBox,你需要启用嵌套虚拟化支持,该支持在Windows版本大于6.0时可用。同时,很重要的一点是需要禁用Hyper-V、Virtual Machine Platform和Windows Hypervisor Platform,否则它将无法正常工作。

    要在VirtualBox和Windows中启用Nested VT-X/AMD-V,你需要按照以下步骤进行:

    1. 你需要在底部的搜索区域键入CMD来打开Windows命令行终端。一旦显示出来,右键单击并选择以管理员身份运行。这将以管理员模式打开命令行终端。

    2. 现在,你需要使用cd "Program Files\Oracle\VirtualBox"命令进入VirtualBox文件夹。该文件夹包含所有VirtualBox可执行组件以及我们需要使用VBoxManage的其他重要文件。

    3. 要在VirtualBox中启用Nested VT-x/AMD-v,你需要运行VBoxManage modifyvm <vm_name> --nested-hw-virt on语法。例如,我正在为名为'Ubuntu 22.04'的虚拟机启用它,所以我将使用命令VBoxManage modifyvm "Ubuntu 22.04" --nested-hw-virt on

    你应该测试KVM是否可用,因此你可以在Ubuntu shell上运行kvm-ok命令kvmok

    要安装KVM,你需要执行以下操作:

    1. 在Ubuntu 22.04上安装KVM

    接下来,运行以下命令在Ubuntu 22.04上安装KVM和其他虚拟化包。

    $ sudo apt install -y qemu-kvm virt-manager libvirt-daemon-system virtinst libvirt-clients bridge-utils
    

    让我们分解一下我们正在安装的软件包:

    • qemu-kvm:一个开源模拟器和虚拟化软件包,提供硬件仿真。
    • virt-manager:一个基于Qt的图形界面,通过libvirt守护进程管理虚拟机。
    • libvirt-daemon-system:一个提供配置文件以运行libvirt守护程序所需的软件包。
    • virtinst:一组用于虚拟机的配置和修改的命令行实用程序。
    • libvirt-clients:一组客户端库和API,用于从命令行管理和控制虚拟机和虚拟化程序。
    • bridge-utils:一组创建和管理桥接设备的工具。
    1. 授权用户

    只有kvm用户组的成员才能运行虚拟机。通过键入以下内容将用户添加到kvm组:

    $ sudo adduser ‘<username>’ kvm
    

    然后您需要停止并禁用 Docker

    $ sudo service docker stop
    $ sudo systemctl disable docker.service
    $ sudo systemctl disable docker.socket
    

    之后,您需要重新启动电脑,Docker桌面版将被安装设置。


    这在我的Ubuntu 22.0上有效。谢谢! - Haris Ch

    6

    Docker需要虚拟化才能工作。因此,您可以在BIOS中打开它。这对我有用。


    你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community
    在我的情况下,这个视频 https://www.youtube.com/watch?v=jb9gPJPd5QY 对我很有帮助。它在我的BIOS的超频部分。我想这可能因BIOS而异。你可能需要挖掘一下。 - Pierre Thibault

    1
    这对我有效:
    打开%AppData%\Docker\settings.json并设置
    • useWindowsContainers: true
    • wslEngineEnabled: true
    这将启用WSL引擎和Windows容器。请注意,保留HTML标签。

    useWindowsContainers??? - Piotr Kula

    0
    在我的情况下,我遇到了一个错误:“Docker Desktop stopped”。
    然后尝试了多次重新安装,但现在出现了一个错误:“running VM: running VM and dependencies: running VM: running qemu: qemu: waiting for qemu process: exit status 1”。
    最后,我注意到我的BIOS中虚拟化被禁用了,选项叫做“SMV mode”,但在你的机器上可能不同。
    现在,Docker又可以正常工作了。

    Credits: https://stackoverflow.com/a/76655270/3779757


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接