Ham*_*oud 7 linux boot linux-mint docker
我使用的是 Linux Mint 19,使用的是 Cinnamon 3.8.8
我有 Nvidia GT740 和 8GB RAM
我正在使用:
Docker版本18.06.1-ce,构建e68fc7a docker-machine版本0.14.0,构建89b8332 docker-compose版本1.21.2,构建a133471
我注意到我的启动速度非常慢
所以我跑了:
systemd-analyze blame
Run Code Online (Sandbox Code Playgroud)
我得到以下信息:
1min 27.764s docker.service
39.269s plymouth-quit-wait.service
24.180s dev-sdb2.device
20.645s nmbd.service
18.437s snapd.service
13.111s systemd-journal-flush.service
12.475s udisks2.service
12.446s NetworkManager.service
10.969s keyboard-setup.service
10.734s libvirtd.service
10.418s NetworkManager-wait-online.service
10.168s networkd-dispatcher.service
10.065s smbd.service
9.736s apparmor.service
..... etc
Run Code Online (Sandbox Code Playgroud)
正如你所看到的 docker.service 花费了大量时间,有人知道我该如何解决这个问题吗?
小智 1
我注意到这个问题已经存在多年了,但今天我在具有以下规格的开发系统上面临同样的问题:
Docker.service 在我的系统上占用了超过 10 分钟的时间,并且在它最终启动时将 multi-user.target 和 Graphical.target 劫持,导致我的系统在此过程中非常不稳定。(您可以在屏幕上移动光标,但是您运行的程序需要等待很长时间才能真正启动)
由于我的系统是开发机器并且没有运行关键基础设施,因此我只是禁用了该服务:
sudo systemctl disable docker
从长远来看,删除启动时重新启动也有助于保持这一点。检查您的服务单位档案。systemctl cat docker.service如果您always在服务节中显示“重新启动”,则可以将其更改为on-failure仅在失败时重新启动(在您有意通过 docker.socket 激活运行它之后),然后它不会在启动时启动,并且启动时会节省你很多时间。这就是我现在使用它的方式:
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=on-failure
Run Code Online (Sandbox Code Playgroud)
containerd 服务和 docker.socket 服务仍然会运行,就我而言,从我到目前为止所看到的情况来看,它们不需要很长时间即可激活(不到 30 秒)。
docker.socket 将在需要时生成一个新的 docker.service (如果您运行 docker 或 docker-compose 命令),因为此时 docker 服务是在整个系统已经启动并运行之后启动的,因此等待时间会大大减少,因为此时 docker.service 所依赖的其他任何内容都已在运行并处于活动状态。
这是我在系统上禁用 docker 服务并重新启动几次后观察到的情况,此后我开始正常的日常 Web 开发工作。
| 归档时间: |
|
| 查看次数: |
4259 次 |
| 最近记录: |