“Docker Daemon'a Bağlanamıyor” Hataları Nasıl Giderilir

Yayınlanan: 2022-08-14

Docker logosunu gösteren grafik

Docker, yazılım kapsayıcıları oluşturmak ve çalıştırmak için önde gelen platformlardan biridir. Swarm modunda tek bir ana bilgisayarda veya birden çok dağıtılmış düğümde kapsayıcıları kullanmak için ihtiyacınız olan her şeyle birlikte gelir.

Docker, daemon tabanlı bir mimariye sahiptir. Kapsayıcıları oluşturmaktan ve başlatmaktan sorumlu olan yazılım, komutlarınızı kabul eden CLI işleminden bağımsızdır. Bu, aktif bir arka plan programı bağlantısı olmadan komutları çalıştırmayı denerseniz, CLI'de hatalar göreceğiniz anlamına gelir. Bu makalede, bu sinir bozucu mesajları gidermek için bazı yöntemler paylaşacağız.

Sorun Belirtileri

Docker CLI, kullanılabilir bir arka plan programı bağlantısına bağlıdır. API çağrılarını kullanarak arka plan programı ile etkileşime girer. Yapılandırılan arka plan programı erişilemediğinde, docker ps , docker run ve docker build gibi docker komutları şuna benzer bir hata mesajı gösterir:

 $ liman işçisi merhaba-dünyayı çalıştırır:en son
unix:///var/run/docker.sock adresindeki Docker arka plan programına bağlanılamıyor
Liman işçisi arka plan programı çalışıyor mu?

Bu, /var/run/docker.sock Unix soketini kullanarak Docker arka plan programı ile iletişim kurmaya çalıştığını ortaya koyuyor. Soket açık değil, bu yüzden bağlantı başarısız oldu.

1. Docker Daemon Hizmetinin Çalıştığını Kontrol Edin

Docker arka plan programı genellikle, ana makineniz yeniden başlatıldıktan sonra Docker'ı otomatik olarak başlatan bir systemd hizmeti tarafından yönetilir. Bu hizmetin çalışıp çalışmadığını kontrol ederek sorun gidermeye başlayabilirsiniz:

 $ sudo systemctl durum docker'ı
docker.service - Docker Uygulaması Konteyner Motoru
     Yüklendi: yüklendi (/lib/systemd/system/docker.service; etkin; satıcı ön ayarı: etkin)
     Aktif: aktif değil (ölü)

Hizmet, arka plan programı Active: active (running) olarak bildirmelidir. Yukarıdaki örnek inactive (dead) gösterir, bu da arka plan programının durduğu anlamına gelir.

Aşağıdaki komutu kullanarak Docker'ı başlatın:

 $ sudo systemctl docker'ı başlat

Artık docker CLI komutlarını başarıyla çalıştırabilmelisiniz.

Makinenizi yeniden başlattıktan sonra Docker'ın durdurulmuş durumda kaldığını görebilirsiniz. Bunu, hizmeti etkinleştirerek ve systemd'nin otomatik olarak başlatmasına izin vererek çözebilirsiniz:

 $ sudo systemctl docker'ı etkinleştir
$ sudo systemctl arka plan programı yeniden yükle

daemon-reload komutu, systemd'ye değişikliği uygulamak için yapılandırmasını yeniden yüklemesini söyler.

2. Daemon'u Manuel Olarak Başlatın

Bazen Docker hizmetinin kurulu olmadığı bir sistem kullanabilirsiniz. dockerd komutunu kullanarak Docker arka plan programını manuel olarak başlatabilirsiniz. Bunun genellikle root olarak çalıştırılması gerekir.

 $ sudo liman işçisi
BİLGİ[2022-06-29T15:12:49.303428726+01:00] Başlatılıyor

Docker, komut çalıştığı sürece erişilebilir kalacaktır. Daemon'u durdurmak için Ctrl+C tuşlarını kullanın.

3. CLI'nin Kontrol Edilmesi Doğru Daemon'u Hedefliyor

CLI, uzak bir Docker arka plan programı örneğine bağlanmaya çalışırken sorunlar oluşabilir. Bu genellikle hata mesajının bir TCP adresi göstermesinin nedenidir:

 $ liman işçisi merhaba-dünyayı çalıştırır:en son
tcp:///0.0.0.0:2375 adresindeki Docker arka plan programına bağlanılamıyor

Bu örnekte, docker CLI, yerel Unix Docker soketi yerine TCP kullanarak 0.0.0.0:2375 Docker arka plan programıyla iletişim kurmaya çalışıyor. Bu, Docker arka plan programının TCP desteği devre dışı bırakılırsa veya belirtilen ana bilgisayara ağda erişilemezse başarısız olur.

Bunu genellikle kullanmak istediğiniz arka plan programı bağlantısı için doğru Docker CLI bağlamına geçerek çözebilirsiniz:

 $ docker bağlamı varsayılanı kullan

Tüm mevcut bağlamları ve bağlandıkları arka plan programı uç noktalarını context ls komutuyla listeleyebilirsiniz:

 $ liman işçisi bağlamı ls
İSİM AÇIKLAMA DOCKER ENDPOINT             
varsayılan * Geçerli DOCKER_HOST tabanlı yapılandırma unix:///var/run/docker.sock

Halihazırda seçili olan bağlam bir yıldız işaretiyle vurgulanır.

DOCKER ENDPOINT sütunundaki beklenmeyen değerlere genellikle ayarlanan DOCKER_HOST ortam değişkeni neden olur. Bu durumda bir uyarı göreceksiniz:

 $ dışa aktarma DOCKER_HOST=1.2.3.4
$ liman işçisi bağlamı ls
İSİM AÇIKLAMA DOCKER ENDPOINT
varsayılan * Geçerli DOCKER_HOST tabanlı yapılandırma tcp://1.2.3.4:2375
Uyarı: DOCKER_HOST ortam değişkeni, etkin bağlamı geçersiz kılar. Bir bağlam kullanmak için ya global --context bayrağını ayarlayın ya da DOCKER_HOST ortam değişkeninin ayarını kaldırın.

DOCKER_HOST ortam değişkeninin kabuğunuzdaki varlığı, seçtiğiniz bağlam tarafından tanımlanan bitiş noktasını geçersiz kılar. Bu örnekte, docker komutları her zaman tcp://1.2.3.4:2375 daemon örneğini hedefleyecektir.

Bu sorun, DOCKER_HOST değişkeni temizlenerek çözülebilir:

 $ dışa aktar DOCKER_HOST=

Docker artık aktif bağlamınız tarafından yapılandırılan uç noktayı kullanacak. Bu, özel bir bağlamı manuel olarak ayarlamadıysanız, /var/run/docker.sock varsayılan yerel Unix soketi olacaktır.

 $ liman işçisi bağlamı ls
İSİM AÇIKLAMA DOCKER ENDPOINT             
varsayılan * Geçerli DOCKER_HOST tabanlı yapılandırma unix:///var/run/docker.sock

4. İzin Sorunları

Docker'ın soketindeki yanlış kullanıcı izinleri, arka plan programı bağlantı sorunlarının başka bir yaygın nedenidir. Bu tür bir sorun genellikle biraz farklı bir hata mesajı gösterir:

 $ liman işçisi merhaba-dünyayı çalıştırır:en son
unix:///var/run/docker.sock adresindeki Docker daemon soketine bağlanmaya çalışırken izin reddedildi

Bu, Unix kullanıcı hesabınızın Docker API'sini ortaya çıkaran soketle etkileşim izni olmadığında gerçekleşir. Kendinizi docker grubuna eklemek, bu sorunu çözmenin en iyi yoludur:

 $ sudo usermod -aG liman işçisi $USER

Bu değişikliğin geçerli olması için yeni bir kabuk penceresi açmanız veya oturumu kapatıp tekrar açmanız gerekir. Artık izin sorunlarıyla karşılaşmadan docker komutlarını çalıştırabiliyor olmalısınız.

Özet

Docker CLI, mevcut yapılandırmanızı kullanarak bir Docker arka plan programı örneğiyle iletişim kuramıyorsa "Docker arka plan programına bağlanamıyor" mesajı görüntülenir. Bunun nedeni genellikle Docker arka plan programı hizmetinin durdurulmuş veya devre dışı bırakılmış olmasıdır. Ayrıca çevrimdışı olan uzak bir Docker ana bilgisayarına bağlanmaya çalışıyor olabilirsiniz.

Artık bu sorunun olası nedenlerinin ve onu çözmenin yaygın yollarının farkında olmalısınız. Docker arka plan programı ayarlarınızı kontrol ederek, Docker hizmetini yeniden başlatarak ve kullanıcı hesabınızın Docker'ın soketiyle etkileşim iznine sahip olduğundan emin olarak hatayı giderin.