Docker, yazılım konteynerleri oluşturmak ve çalıştırmak için önde gelen platformlardan biridir. Sürü modunda kapsayıcıları tek bir ana bilgisayarda veya birden çok dağıtılmış düğümde çalıştırmak için ihtiyacınız olan her şeyle birlikte gelir.
Docker, arka plan programı tabanlı bir mimariye sahiptir. Kapsayıcıları oluşturmaktan ve çalıştırmaktan sorumlu olan yazılım, komutlarınızı kabul eden CLI işleminden bağımsızdır. Bu, etkin bir arka plan programı bağlantısı olmadan komutları çalıştırmayı denerseniz, CLI’de hatalar göreceğiniz anlamına gelir. Bu yazıda, bu can sıkıcı mesajları çözmenin bazı yollarını paylaşacağız.
Sorunun belirtileri
Docker CLI, kullanılabilir bir arka plan programı bağlantısını temel alır. API çağrılarını kullanarak daemon ile iletişim kurar. Yapılandırılan arka plan programına erişilemediğinde, docker
gibi komutlar docker ps
Ve docker run
E docker build
Aşağıdakine benzer bir hata mesajı görünecektir:
$ docker run hello-world:latest Cannot connect to the Docker daemon at unix:///var/run/docker.sock Is the docker daemon running?
Bu, CLI’nin aşağıdakileri kullanarak Docker cini ile iletişim kurmaya çalıştığını gösterir. /var/run/docker.sock
Unix bağlantısı. Soket açık değil, bu nedenle bağlantı başarısız oluyor.
1. Docker Daemon hizmetinin çalıştığını doğrulayın
Docker arka plan programı genellikle, sunucunuz yeniden başlatıldıktan sonra Docker’ı otomatik olarak başlatan bir sistemd hizmeti tarafından yönetilir. Bu hizmetin çalışıp çalışmadığını kontrol ederek sorun gidermeye başlayabilirsiniz:
$ sudo systemctl status docker docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: inactive (dead)
servis rapor vermeli Active: active (running)
arka plan programı çalışırken. Yukarıdaki örnek şunu gösterir: inactive (dead)
Böylece daemon durdu.
Docker’ı aşağıdaki komutla başlatın:
$ sudo systemctl start docker
Şimdi koşabilmelisin docker
CLI komutları başarıyla tamamlandı.
Makinenizi yeniden başlattıktan sonra, Docker’ın hala takılı kaldığını fark edebilirsiniz. Bunu, systemd’nin otomatik olarak başlatabilmesi için hizmeti etkinleştirerek düzeltebilirsiniz:
$ sudo systemctl enable docker $ sudo systemctl daemon-reload
Bu harika daemon-reload
Komut, systemd’ye değişikliği uygulamak için yapılandırmayı yeniden yüklemesini söyler.
2. Daemon’u manuel olarak başlatın
Bazen Docker hizmetinin yüklü olmadığı bir sistemi kullanabilirsiniz. Docker arka plan programını şu komutla manuel olarak başlatabilirsiniz: dockerd
sıralama. Bu normalde şu şekilde yapılmalıdır: root
.
$ sudo dockerd INFO[2022-06-29T15:12:49.303428726+01:00] Starting up
Docker, komut yürütüldüğü sürece kullanılabilir durumda kalacaktır. Arka plan programını durdurmak için Ctrl + C tuşlarını kullanın.
3. CLI’nin doğru arka plan programını hedeflediğini doğrulayın
CLI uzak bir Docker örneğine bağlanmaya çalıştığında sorunlar oluşabilir. Bu genellikle TCP adresi için hata mesajının nedenidir:
$ docker run hello-world:latest Cannot connect to the Docker daemon at tcp:///0.0.0.0:2375
Bu örnekte, docker
CLI şu adreste Docker arka plan programıyla iletişim kurmaya çalışıyor: 0.0.0.0:2375
Orijinal Unix Docker soketi yerine TCP kullanma. Docker arka plan programı için TCP desteği devre dışı bırakılırsa veya belirtilen ana bilgisayara ağ üzerinden erişilemiyorsa bu 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 düzeltebilirsiniz:
$ docker context use default
Mevcut tüm bağlamları ve bağlandıkları arka plan programı bitiş noktalarını listeleyebilirsiniz. context ls
Prens:
$ docker context ls NAME DESCRIPTION DOCKER ENDPOINT default * Current DOCKER_HOST based configuration unix:///var/run/docker.sock
Halihazırda seçili olan bağlam bir yıldız işaretiyle işaretlenmiştir.
beklenmeyen değerler DOCKER ENDPOINT
Genellikle sütuna neden olur DOCKER_HOST
Ortam değişkeni ayarlanır. Bu durumda bir uyarı göreceksiniz:
$ export DOCKER_HOST=1.2.3.4 $ docker context ls NAME DESCRIPTION DOCKER ENDPOINT default * Current DOCKER_HOST based configuration tcp://1.2.3.4:2375 Warning: DOCKER_HOST environment variable overrides the active context. To use a context, either set the global --context flag, or unset DOCKER_HOST environment variable.
Mevcudiyet DOCKER_HOST
Kabuğunuzdaki ortam değişkeni, seçtiğiniz bağlam tarafından tanımlanan uç noktayı geçersiz kılar. Bu örnekte, docker
Komutlar her zaman arka plan programı örneğini hedefler tcp://1.2.3.4:2375
.
Bu sorun temizlenerek çözülebilir. DOCKER_HOST
Çalışan:
$ export DOCKER_HOST=
Docker artık etkin bağlamınız tarafından yapılandırılan uç noktayı kullanır. Bu, varsayılan yerel Unix soketidir. /var/run/docker.sock
Özel bağlamı manuel olarak ayarlamadığınız sürece.
$ docker context ls NAME DESCRIPTION DOCKER ENDPOINT default * Current DOCKER_HOST based configuration unix:///var/run/docker.sock
4. İzin sorunları
Bir Docker soketindeki hatalı 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örüntüler:
$ docker run hello-world:latest Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
Bu, Unix kullanıcı hesabınızın Docker API’sini açığa çıkaran sokete bağlanmasına izin verilmediğinde oluşur. kendini ekle docker
Grup, bu sorunu çözmenin en iyi yoludur:
$ sudo usermod -aG docker $USER
Bu değişikliğin geçerli olması için yeni bir kabuk penceresi açmanız veya oturumu kapatıp tekrar oturum açmanız gerekir. Şimdi koşabilmelisin docker
izin sorunları ile karşılaşmadan siparişler.
genel bakış
Docker CLI, geçerli yapılandırmayı kullanarak Docker arka plan programı örneğine bağlanamadığında “Docker arka plan programına bağlanılamıyor” mesajı görüntülenir. Buna genellikle Docker arka plan programı hizmetinin durdurulması veya devre dışı bırakılması neden olur. İnternete bağlı olmayan üçüncü taraf bir Docker ana bilgisayarına bağlanmayı da deneyebilirsiniz.
Artık bu sorunun olası nedenlerinin ve sorunu çözmenin yaygın yollarının farkında olmalısınız. Docker arka plan programı ayarlarını kontrol ederek, Docker hizmetini yeniden başlatarak ve kullanıcı hesabınızın Docker soketi ile iletişim izni olduğundan emin olarak hatayı düzeltin.
kaynak bağlantı
Diğer gönderilerimize göz at
[wpcin-random-posts]