"Unix: ///var/run/docker.sock" adresindeki Docker Daemon'a Bağlanılamıyor

Docker, kapsayıcıları kullanarak uygulamaları kolayca oluşturma, dağıtma ve çalıştırma becerisiyle giderek daha popüler hale geliyor. Kapsayıcılar, geliştiricilerin bir uygulamayı tam bir paket olarak dağıtmadan önce tüm kitaplıkları ve bağımlılıklarıyla birlikte paketlemesine olanak tanır. Kurulum Linux üzerinde Docker nispeten kolaydır. Tek yapmanız gereken Terminal'de birkaç komut çalıştırmaktır ve gitmeniz iyi olur.

Ancak bu, başarılı bir kurulumdan sonra bile tüm kullanıcılar için aynı olmayabilir. En yaygın ortaya çıkan hatalardan biri şudur:(Unix: ///var/run/docker.sock adresindeki Docker arka plan programına bağlanılamıyor. Docker daemon çalışıyor mu?) Bu hata, docker run, docker info, docker pull, docker stop gibi çeşitli docker komutlarını çalıştırırken ortaya çıkabilir.

Hataya ne sebep olur: Docker Daemon'a Bağlanılamıyor?

Çok sayıda geliştiriciden şikayet aldıktan sonra, konuya dalmaya ve etkili çözümler bulmaya karar verdik. Bu hatayı tetikleyen nedenlerden bazıları şunlardır:

  • Docker daemon değilkoşma.
  • Docker yapmazkapat temiz.
  • Eksiklikkök ayrıcalıkları docker hizmetini başlatmak için.

Artık sorunun nedeni hakkında temel bir anlayışa sahip olduğunuza göre, sizin için mevcut olan çeşitli çözümlere bakalım.

Çözüm 1: Docker hizmetini systemctl ile başlatın

Ubuntu'da Docker'ın yeni kurulumunu yeni tamamladıysanız veya PC'nizi yeniden başlattıysanız, yüksek olasılıklaDocker hizmeti dır-dirkoşmak yok. Docker daemon (dockerd), docker için sistem hizmetidir. Bu hizmet görüntüler, kapsayıcılar, ağlar ve birimler gibi çeşitli Docker nesnelerini işler ve Docker API isteklerini dinler.

Systemctl komutu, eski SysV init sisteminin yerini almaya gelir vesystemd hizmetlerini yönetir Linux sistemlerinde çalışıyor. Sisteminizde systemctl yoksa endişelenmeyin; kullanhizmet komutu aşağıda açıklandığı gibi.

Not: Bu yöntem yalnızca Docker'ı APT paket yöneticisiyle kuran kullanıcılar için çalışır. Docker'ı şu şekilde kurduysanız:SNAPbakın5.Çözümaltında.

  1. Terminali açın ve ilk komutu çalıştırın -liman işçisinin maskesini kaldırmak.
sudo systemctl maskesini kaldırma penceresi

Docker maskeli olduğunda docker hizmetini başlatmaya çalışırsak, "docker.service başlatılamadı: Unit masked" hatasıyla karşılaşabiliriz. Maske, devre dışı bırakmanın daha sağlam bir versiyonu olarak kabul edilebilir. Bir birim dosyası maskelendiğinde, birim "dev / null" ile bağlantılıdır. Tüm birim dosyalarının durumunu - "komutuyla listeleyebilirsiniz.$ systemctl liste-birim dosyaları

2. Docker birimi bir kez maskesiz, yapabiliriz liman işçisini başlatarka plan programı systemctl komutu ile. liman işçisi arka plan programı Images, Containers ve Docker API istekleri gibi docker nesnelerini yönetir. Aşağıdaki komutu komut satırında yürütün.

systemctl başlangıç ​​penceresi

3. Kime Doğrulayın Docker hizmeti olup olmadığı aktif ve çalışıyor. kullanacağızsystemctl durumu belirli bir hizmetin mevcut durumunu gösteren komut. Terminalinizde aşağıdaki komutu yürütün.

systemctl durum penceresi

Yukarıdaki görselden anlıyoruz kiDocker aktif ve çalışıyor.

2.Çözüm: "Başarısız Docker Çekişi" ni temizleyin ve Docker hizmetini başlatın

Bir konteyner çekerken beklenmedik şekilde Docker'ı kapatabileceğiniz durumlar vardır. Bu tür durumlar maskeyi docker.service vedocker .socketDosyalar. Docker.socket, "/var/run/docker.sock" konumunda bulunan bir dosyadır ve Docker daemon ile iletişim kurmak için kullanılır. İhtiyacımız olacakmaskesini kaldırmak iki birimli dosyalar - önce docker .service ve docker.daemonilerleyen -edocker'ı başlatın.

  1. Başlatterminal ve yürütmekkomutlar altında:
systemctl docker.service maskesini kaldır sistemctl docker.socket systemctl start docker.service

Aşağıdaki komutları uyguladıktan sonra bile hala hatayı yaşıyorsanız, biz sil içindeki dosyalar Containerd Docker'ı yeniden başlatmadan önce dizin. Containerd, Docker 1.11'de sunulan bir özellikti ve Docker görüntülerinin yaşam döngüsünü yönetmek için kullanılır.

2. Terminal'i açın ve aşağıdaki komutları uygulayın. Bildiğinizden emin olun root şifresi çünkü komutları yürütmek için yükseltilmiş ayrıcalıklara ihtiyacımız olacak.

sudo su service docker stop cd / var / run / docker / libcontainerd rm -rf containerd / * rm -f docker-containerd.pid service docker start

3. Çözüm: Dockerd (Docker Daemon) Hizmetini Başlatın

Dockerd, Docker API'lerini dinleyen ve çeşitli Docker nesnelerini yöneten Docker arka plan programıdır. Dockerd, ' komutuna alternatif olarak kullanılabilir.$ systemctl docker'ı başlatDocker daemon'u başlatmak için de kullanılır.

  1. Açık terminal ve dockerd'i başlat aşağıdaki komutu yürüterek:
sudo dockerd

4.Çözüm: Docker'ı Service komutuyla başlatın

Eğer kullanıyorsanız SysV başlatma sistemi, o zaman systemctl komutu sizin için çalışmayacaktır. Kullanmamız gerekecek servis komutu -e docker daemon'u başlat.

  1. Terminali başlatın ve yürütmek aşağıdaki komutlar:
sudo service --status-all sudo service docker start

5. Çözüm: Docker Hizmetini Snap ile Başlatın

Docker'ıPaket yöneticisini yapıştırdocker daemon'unu yönetmek için snap komutunu kullanmanız gerekir.

Snap, genellikle hizmetlerini otomatik olarak yönetir. Ancak bu hata gibi durumlarda manuel müdahale gerekecektir. Snap komutuyla kullanabileceğiniz argümanlardan bazıları stop, start ve restart'tır. Bizim durumumuzda başlangıç ​​parametresini kullanacağız.

  1. Terminal'i açın ve aşağıdaki komutu çalıştırın.Docker'ı başlat.
sudo snap başlangıç ​​penceresi

2. için aşağıdaki komutu yürütün. Doğrulayın olup olmadığını Docker hizmeti başlatıldı.

sudo snap hizmetleri

Bu olacak liste hepsi koşuyor anlık hizmetler.

Yukarıdaki komutlar işinize yaramazsa deneyin Docker'ı bağlamak: ev fişi varsayılan olarak otomatik bağlanmadığından. Bir kez yapıldığında, Başlat Docker hizmeti.

3. Terminal'i başlatın ve aşağıdaki komutları çalıştırın:

sudo snap connect docker: home: home sudo snap başlangıç ​​docker

6.Çözüm: Root P'siz kullanıcılar için Docker'ı başlatınNehirler

Hata nedeniyle de ortaya çıkabilir yükseltilmiş ayrıcalıkların olmaması ve kullanıcının 'unix: ///var/run/docker.sock'a erişimi yok. Neyse ki bir çözüm var. Docker Host değişkenini 2375 numaralı bağlantı noktası üzerinden localhost'a aktaracağız.

  1. Terminali açın ve aşağıdaki komutu çalıştırın:
dışa aktar DOCKER_HOST = tcp: // localhost: 2375

7. Çözüm: Docker'ı yeniden yükleyin

Yukarıdaki çözümler hatayı çözmezse, büyük olasılıkla kurulum hataları yaşama olasılığınız vardır. Docker'ı Linux sisteminize doğru şekilde kurmak için Docker resmi web sitesindeki adımları izleyin.

Facebook Twitter Google Plus Pinterest