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

Kuinka korjata
Indeksi
  1. Ymmärrä, mitä Docker daemon tekee
  2. Tarkista käyttäjäoikeutesi
  3. Vahvista, että Docker-palvelu on käynnissä
  4. Käynnistä Docker daemon manuaalisesti (dockerd)
  5. Tarkista ja
  6. Korjaa Docker Unix Socket
  7. Vahvista Docker-kontekstit ja ympäristömuuttujat
    1. Tarkista ympäristömuuttujat
    2. Tarkista aktiivinen Docker-konteksti
  8. Alustakohtaiset ongelmat
  9. 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.sock

Tä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 $USER

Jos Docker-ryhmää ei ole olemassa, voit luoda sen seuraavalla komennolla:

sudo groupadd docker

Vahvista, 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 docker

Meidä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 docker

Jos haluat, että Docker käynnistyy automaattisesti aina, kun järjestelmäsi käynnistyy, ota se käyttöön seuraavalla komennolla:

sudo systemctl enable docker

Kä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 dockerd

Seuraa 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.sock

Jos 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 docker

Jos 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.sock

Vahvista 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 DOCKER

Jos 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_HOST

Poistaaksesi 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 ls

Tä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 default

Alustakohtaiset 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 --running

Jos 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

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Go up