“Docker Daemon'a Bağlanamıyor” Hataları Nasıl Giderilir
Yayınlanan: 2022-08-14Docker, 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.