Ubuntu中Docker報錯“Cannot?connect?to?the?Docker?daemon?at?unix:///var/run/docker.sock”錯誤解決辦法
發(fā)現(xiàn)問題
在 Ubuntu 上運行 Docker 時,很多人都會遇到下面這個經(jīng)典錯誤:
docker run hello-world
輸出如下:
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? Run 'docker run --help' for more information
一、問題現(xiàn)象
即使執(zhí)行了:
sudo systemctl start docker sudo systemctl status docker
看到輸出中顯示:
Active: active (running)
但是執(zhí)行任何 docker run 命令仍然報錯:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock
并且查看 socket 文件:
ls -l /var/run/docker.sock
結(jié)果是:
ls: 無法訪問 '/var/run/docker.sock': 沒有那個文件或目錄
二、問題原因分析
Docker 客戶端(docker 命令)是通過 **Unix Socket 文件 **/var/run/docker.sock 與后臺服務(wù) dockerd 通信的。
如果
/var/run/docker.sock不存在,客戶端就無法與守護進程通信。這通常意味著 Docker 守護進程(dockerd)沒有正確通過 systemd socket 激活。
在正常情況下,Docker 啟動邏輯如下:
systemd → docker.socket (監(jiān)聽 /run/docker.sock)
? 激活 docker.service (啟動 dockerd)
? 接管 /run/docker.sock然而,當(dāng)系統(tǒng)中存在以下情況時,Socket 文件就無法生成:
dockerd沒有被 systemd 通過 socket 激活;/run/docker.sock被殘留文件占用;Docker 啟動順序出錯(socket 先啟動但 daemon 沒接管);
/var/run未正確鏈接到/run;用戶未加入
docker用戶組。
三、完整解決步驟
以下步驟在 Ubuntu 20.04+、22.04+ 上驗證有效。
停止所有與 Docker 相關(guān)的進程
sudo systemctl stop docker sudo systemctl stop docker.socket sudo pkill dockerd
確保全部停止:
ps -ef | grep dockerd
若仍有進程殘留,手動 sudo kill -9 PID。
清理舊的 socket 文件
sudo rm -f /run/docker.sock sudo rm -f /var/run/docker.sock
檢查 /var/run 是否是指向 /run 的符號鏈接:
ls -ld /var/run
應(yīng)當(dāng)顯示:
lrwxrwxrwx 1 root root 4 ... /var/run -> /run
? 如果不是,請修復(fù):
sudo ln -sf /run /var/run
重新加載 systemd 并啟動服務(wù)
sudo systemctl daemon-reload sudo systemctl start docker.socket sudo systemctl start docker
檢查 docker socket 是否生成
ls -l /run/docker.sock
正常情況下會看到:
srw-rw---- 1 root docker 0 11月 4 09:30 /run/docker.sock
說明 socket 已成功被 dockerd 接管。
測試運行 Hello World
sudo docker run hello-world
輸出類似:
Hello from Docker! This message shows that your installation appears to be working correctly.
? 成功!
總結(jié)
到此這篇關(guān)于Ubuntu中Docker報錯“Cannot connect to the Docker daemon at unix:///var/run/docker.sock”錯誤解決辦法的文章就介紹到這了,更多相關(guān)Docker報錯Cannot connect to the Docker daemon at unix內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解在Docker容器中運行Spring Boot應(yīng)用
本文將以一個最簡單的Spring Boot開發(fā)的Web應(yīng)用為例,講解如何將其容器化運行。本文的重點是構(gòu)建Docker鏡像、運行Docker容器。2017-06-06
docker-compose部署nacos 2.2.3的詳細過程
這篇文章主要介紹了docker-compose部署nacos 2.2.3的詳細過程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-11-11
Docker網(wǎng)絡(luò)原理及自定義網(wǎng)絡(luò)詳細解析
一般使用自定義網(wǎng)絡(luò),自定義網(wǎng)絡(luò)使用network創(chuàng)建,創(chuàng)建時可以指定子網(wǎng)網(wǎng)段及網(wǎng)關(guān)等信息,在創(chuàng)建并啟動容器時指定使用的網(wǎng)絡(luò),今天通過本文給大家介紹Docker網(wǎng)絡(luò)原理及自定義網(wǎng)絡(luò)的相關(guān)知識,感興趣的朋友一起看看吧2021-05-05
Docker buildx構(gòu)建多平臺鏡像并推送到私有倉庫的方法
這篇文章主要介紹了Docker buildx構(gòu)建多平臺鏡像并推送到私有倉庫,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01

