Kuinka korjata "Ei voida yhdistää Docker Daemoniin" -virhe

- Ymmärrä, mitä Docker daemon tekee
- Tarkista käyttäjäoikeutesi
- Vahvista, että Docker-palvelu on käynnissä
- Käynnistä Docker daemon manuaalisesti (dockerd)
- Tarkista ja
- Korjaa Docker Unix Socket
- Vahvista Docker-kontekstit ja ympäristömuuttujat
- Alustakohtaiset ongelmat
- Vinkit virheen välttämiseksi tulevaisuudessa
Oletko kohdannut "Ei voida yhdistää Docker daemoniin" -virheen? Tässä oppaassa käsitellään syitä ja yksinkertaisia ratkaisuja ongelman korjaamiseksi.
Oletko koskaan yrittänyt käynnistää Dockeria, mutta kohdannut äkkiä ”Ei voida yhdistää Docker daemoniin” -virheen? Tämä on yksi turhauttavimmista ongelmista, joka voi estää sinua aloittamasta. Docker daemon toimii taustalla, ja se hoitaa kaiken containerien käynnistämisestä ja pysäyttämisestä kuvien hallintaan, kerrosten rakentamiseen ja kaikkiin Docker-komentosi, kuten docker run ja docker ps, käsittelyyn. Jos terminaalisi ei voi yhdistää siihen, mikään ei toimi.
Tässä oppaassa selitän, miksi tämä virhe ilmenee, ja näytän sinulle yksinkertaisia, käytännön ratkaisuja, jotta Docker toimisi jälleen sujuvasti.
Ymmärrä, mitä Docker daemon tekee
Docker daemon (dockerd) on taustapalvelu, joka vastaa containerien, kuvien, verkkojen ja tallennuksen hallinnasta. Kun suoritat Docker-komentoja, CLI ei tee näitä tehtäviä itse, vaan se lähettää pyyntöjä daemonille. Linux-järjestelmissä tämä viestintä tapahtuu Unix-soketin kautta, joka sijaitsee kohdassa “/var/run/docker.sock”. Docker Desktop- tai WSL-ympäristöissä CLI kommunikoi daemonin kanssa nimettyjen putkien tai virtuaalikoneen hallitseman soketin kautta.
Jos CLI ei voi kommunikoida daemonin kanssa, saat virheitä kuten “Ei voida yhdistää Docker daemoniin unix:///var/run/docker.sock. Onko docker daemon käynnissä?”
Tämä tilanne johtuu usein jostakin seuraavista syistä:
- Docker-palvelu ei ole käynnissä.
- Käyttäjälläsi ei ole lupaa käyttää Docker sokettia.
- Docker käyttää väärää kontekstia.
- Docker soketti on puuttuu tai sen käyttöoikeudet ovat vääriä.
- Ympäristömuuttujat, kuten
DOCKER_HOST, on väärin määritetty. - Alustakohtaiset ongelmat (Docker Desktop, WSL tai etädaemonit).
Tärkeintä on tunnistaa, mikä osa tätä viestintäketjua on rikki, jotta ongelma voidaan korjata oikein.
Tarkista käyttäjäoikeutesi
Linux-järjestelmissä Docker kommunikoi Unix-soketin kautta, joka kuuluu root-käyttäjälle. Käyttäjien on kuuluttava Docker-ryhmään, jotta he voivat käyttää sitä ilman sudo.
Tarkistaaksesi soketin käyttöoikeudet, suorita seuraava komento:
ls -l /var/run/docker.sockTämä tuloste kertoo, että soketti kuuluu rootille, ja vain ne käyttäjät, jotka kuuluvat docker-ryhmään, saavat lukea tai kirjoittaa siihen. Jos käyttäjätilisi ei ole osa tätä ryhmää, Docker estää pääsyn ja komentojen suorittaminen epäonnistuu. Korjataksesi tämän ongelman, sinun tulee lisätä käyttäjäsi Docker-ryhmään:
sudo usermod -aG docker $USERJos Docker-ryhmää ei ole olemassa, voit luoda sen seuraavalla komennolla:
sudo groupadd dockerVahvista, että Docker-palvelu on käynnissä
Toinen hyvin yksinkertainen mutta tärkeä ongelma on se, että Docker ei ehkä ole ollenkaan käynnissä. Jos Docker daemon on pysäytetty, Docker CLI:llä ei ole mihin yhdistää, mikä johtaa edellä mainittuun virheeseen. Tarkistaaksesi Docker-palvelun nykyinen tila, suorita seuraava komento:
systemctl status dockerMeidän tapauksessamme Docker on aktiivinen ja toimii onnistuneesti. Jos tulosteessa näkyy tila, kuten inaktiivinen (kuollut) tai epäonnistunut, se tarkoittaa, että Docker-palvelu ei ole käynnissä.
Käynnistääksesi Docker manuaalisesti, voit suorittaa tämän komennon:
sudo systemctl start dockerJos haluat, että Docker käynnistyy automaattisesti aina, kun järjestelmäsi käynnistyy, ota se käyttöön seuraavalla komennolla:
sudo systemctl enable dockerKäynnistä Docker daemon manuaalisesti (dockerd)
Pienissä palvelimissa tai mukautetuissa Linux-asetuksissa Dockeria ei ehkä hallita systemd:n kautta. Näissä ympäristöissä Docker daemon ei välttämättä käynnisty automaattisesti, vaikka Docker on asennettu. Testataksesi, voiko daemon käynnistyä, yritä käynnistää se manuaalisesti:
sudo dockerdSeuraa tulosteita tarkasti. Jos jokin menee pieleen, Docker tulostaa yleensä selkeän virheilmoituksen, joka selittää ongelman, kuten tallennusajurin ongelma, käyttöoikeusvirhe tai verkko-konflikti.
Tarkista ja
Korjaa Docker Unix Socket
Docker CLI kommunikoi Docker-daemonin kanssa Unix-socketin avulla. Jos tämä socket puuttuu, on vaurioitunut tai sen käyttöoikeudet ovat väärät, Docker ei voi yhdistää. Voit tarkistaa, onko socket olemassa seuraavalla komennolla:
ls /var/run/docker.sockJos tiedosto puuttuu, se yleensä tarkoittaa, että Docker-daemon ei ole käynnissä tai Docker epäonnistui luomaan socketin käynnistyksen aikana. Tässä tapauksessa sinun on käynnistettävä Docker uudelleen socketin luomiseksi:
sudo systemctl restart dockerJos socket on olemassa mutta sen käyttöoikeudet ovat väärät, korjaa ne seuraavilla komennoilla:
sudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sockVahvista Docker-kontekstit ja ympäristömuuttujat
Joskus Docker ei voi yhdistää daemoniin, koska se osoittaa väärään päätekohtaan. Tämä voi tapahtua, jos DOCKER_HOST -ympäristömuuttuja on asetettu väärin tai aktiivinen Docker-konteksti osoittaa etäiseen tai käytettävissä olevaan ympäristöön.
Tarkista ympäristömuuttujat
Suorita seuraava komento tarkistaaksesi, onko mitään Docker-ilmaisiin liittyviä ympäristömuuttujia asetettu:
env | grep DOCKERJos näet jotain kuten DOCKER_HOST=tcp://localhost:2375, se tarkoittaa, että Docker osoittaa etäiseen daemonin, joka voi olla passiivinen tai puuttuva. Voit korjata tämän väliaikaisesti poistamalla muuttujan käytöstä:
unset DOCKER_HOSTPoistaaksesi sen pysyvästi, siivoa se shell-konfiguraatiotiedostoista, kuten “~/.bashrc”, “~/.zshrc” ja “/etc/environment”.
Tarkista aktiivinen Docker-konteksti
Docker-kontekstit määrittävät, mihin daemoniin CLI kommunikoi. Voit luetella käytettävissä olevat kontekstit ja nähdä aktiivisen:
docker context lsTähti (*) osoittaa tällä hetkellä aktiivista kontekstiä. Jos konteksti osoittaa käytettävissä olevaan ympäristöön, palaa takaisin oletuslokalisointidaemonin käyttöön:
docker context use defaultAlustakohtaiset ongelmat
Jotkut yhteysongelmat ilmenevät vain tietyillä alustoilla. Esimerkiksi Docker Desktop Windowsissa tai macOS:ssa suorittaa daemonin kevyessä VM:ssä. Jos VM ei käynnisty, Docker CLI ei voi yhdistää. Ratkaistaksesi tämän ongelman, käynnistä Docker Desktop uudelleen.
Sama pätee, kun käytät Dockeria WSL:n kanssa; daemon toimii Linux-ympäristössä. Varmista, että WSL on asennettu ja käynnissä:
wsl --list --runningJos Docker-daemon ei ole WSL:n saatavilla, Docker Desktop -palvelun tai tietyn WSL-jakelun uudelleenkäynnistäminen usein ratkaisee ongelman.
Vinkit virheen välttämiseksi tulevaisuudessa
Vältääksesi “ei voi yhdistää Docker-daemon” -virheitä tulevaisuudessa, varmista aina, että Docker-palvelu on käynnissä, erityisesti järjestelmäpäivitysten jälkeen, ja lisää käyttäjäsi Docker-ryhmään, jotta voit välttyä sudo:n käytöltä. Tarkista säännöllisesti aktiivinen Docker-kontekstisi, erityisesti koneita vaihdettaessa, WSL-jakeluita käytettäessä tai Docker Desktopia käytettäessä, ja vältä DOCKER_HOST:n asettamista, ellei se ole yhteydessä tiettyyn etädaemonin, sillä väärin määritellyt muuttujat voivat vääristää CLI-komentoja. Lisäksi seuraa daemonin lokeja käyttämällä journalctl -u docker.service havaitaksesi ongelmat aikaisessa vaiheessa.
Nyt kun olet lukenut Kuinka korjata "Ei voida yhdistää Docker Daemoniin" -virhe loppuun, kutsumme sinut tutustumaan lisää Linux-kategoriaan. Löydät sieltä muita mielenkiintoisia artikkeleita, jotka laajentavat tietojasi ja pitävät sinut ajan tasalla. Älä lopeta lukemista ja löytämistä!

Vastaa