Dra*_*ile 6 linux apt docker snap
我在使用 snap 安装 docker 时遇到了问题,然后我转移到了 apt。这是在生产服务器上。为了减少停机时间,我执行了以下操作:
/snap/bin已经从...删除PATHsudo snap stop docker使用和禁用 docker 的 snap 功能sudo snap remove docker一切都很好。第二天,我尝试重新启动用于监控的容器,但运行时出现以下错误sudo docker ps -a:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Run Code Online (Sandbox Code Playgroud)
守护进程正在运行:
root 42709 0.2 0.3 2344140 54276 ? Ssl Sep07 5:30 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root 42868 0.0 0.0 1813868 5944 ? Sl Sep07 0:16 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8072 -container-ip 172.19.0.3 -container-port 8072
Run Code Online (Sandbox Code Playgroud)
如何恢复对 docker 守护进程的控制?
Han*_* Ye 10
\n在你的奔跑中dockerd,
/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock\n ^^^^^^^\nRun Code Online (Sandbox Code Playgroud)\n(标记^^^是我添加的,用于指向行内的位置,它不是 shell 输出的一部分。)
根据守护进程套接字选项 doc,这-H fd://意味着守护进程正在使用由 systemctl 管理的文件描述符。在这种情况下,不会有套接字文件/var/run/docker.sock。\n但是dockercli 会尝试通过docker.sock套接字文件连接到 docker 守护进程,这就是问题所在。
在我遇到的情况下,docker守护进程是通过systemctl作为服务启动的,您可以使用systemctl命令找到服务文件路径,例如(^^^我添加了标记来指向一行中的位置,它\不是 shell 输出的一部分)
/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock\n ^^^^^^^\nRun Code Online (Sandbox Code Playgroud)\n然后,修改该文件的 How dockerdis Bringed 行
ubuntu-linux-22-04-desktop:~$ sudo systemctl status docker\n\n\xe2\x97\x8f docker.service - Docker Application Container Engine\n Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n Active: active (running) since Fri 2023-05-19 23:59:31 CST; 55s ago\n...\nRun Code Online (Sandbox Code Playgroud)\n在打开的文件中,找到以以下内容开头的行ExecStart=/usr/bin/dockerd
[Unit]\nDescription=Docker Application Container Engine\n...\n\n[Service]\nType=notify\n# the default is not to use systemd for cgroups because the delegate issues still\n# exists and systemd currently does not support the cgroup feature set required\n# for containers run by docker\nExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock\n\n...\nRun Code Online (Sandbox Code Playgroud)\n修改命令-H中的参数dockerd以使用 unix socket 而不是fd,将行更改为
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock --containerd=/run/containerd/containerd.sock\nRun Code Online (Sandbox Code Playgroud)\n保存文件(在vim中,命令模型zz),然后重新加载
sudo vim /lib/systemd/system/docker.service\nRun Code Online (Sandbox Code Playgroud)\n然后,重新启动 docker 守护进程
\n[Unit]\nDescription=Docker Application Container Engine\n...\n\n[Service]\nType=notify\n# the default is not to use systemd for cgroups because the delegate issues still\n# exists and systemd currently does not support the cgroup feature set required\n# for containers run by docker\nExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock\n\n...\nRun Code Online (Sandbox Code Playgroud)\ndocker daemon重启完成后,你应该能够看到socket文件
\nExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock --containerd=/run/containerd/containerd.sock\nRun Code Online (Sandbox Code Playgroud)\ndockercli 现在应该可以工作了。尝试类似的东西
sudo systemctl daemon-reload\nRun Code Online (Sandbox Code Playgroud)\n希望能帮助解决您的问题。
\n| 归档时间: |
|
| 查看次数: |
6582 次 |
| 最近记录: |