解决 极空间升级后Docker启动不了的问题,Docker容器界面是一片空白

解决这个问题就是要系统启动好后,重启一下Docker服务

在 Ubuntu 中系统和网络启动后 60 秒执行 sudo service docker restart

以下是基于 systemd 的解决方案,确保在系统和网络就绪后再延迟 60 秒执行命令,去除了日志记录功能。

使用 systemd 服务实现网络启动后延迟执行

操作步骤:

  1. 创建一个 systemd 服务文件:

    bash

    sudo vi /etc/systemd/system/restart-docker-delayed.service
    
  2. 输入以下内容(直接粘贴到文件中):

    [Unit]
    Description=Restart Docker 60 seconds after system and network are ready
    After=docker.service network-online.target
    
    [Service]
    Type=oneshot
    ExecStartPre=/bin/sleep 60
    ExecStart=/usr/sbin/service docker restart
    RemainAfterExit=yes
    
    [Install]
    WantedBy=multi-user.target
    
  3. 保存并退出(Ctrl+O,回车,Ctrl+X)。

  4. 重新加载 systemd 并启用服务:

    bash

    sudo systemctl daemon-reload
    sudo systemctl enable restart-docker-delayed.service
    
  5. 重启系统测试:

    bash

    sudo reboot
    

说明:

  • After=docker.service network-online.target:

    • docker.service:依赖 Docker 服务启动。

    • network-online.target:确保网络完全就绪。

  • ExecStartPre=/bin/sleep 60:在网络和系统就绪后额外等待 60 秒。

  • ExecStart=/usr/sbin/service docker restart:直接重启 Docker,去除了日志记录。

验证:

  • 重启后,检查服务状态:

    bash

    systemctl status restart-docker-delayed.service
    
  • 检查 Docker 是否运行:

    bash

    docker ps
    

如果需要免密码执行 sudo

如果 sudo service docker restart 需要密码,可以配置免密:

  1. 编辑 sudoers 文件:

    bash

    sudo visudo
    
  2. 添加一行(将 username 替换为你的用户名):

    username ALL=(ALL) NOPASSWD: /usr/sbin/service docker restart
    
  3. 保存退出。


留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

+ 10 = 20