Docker-Compose, Docker Daemon'a bağlanamıyor


116

Docker daemon'a bağlanamadığımı söyleyen bir hata mesajı alıyorum. Benzer sorunları olan diğer insanların cevaplarına baktım ama yardımcı olmadı. Ubuntu 15.10 sürümünü çalıştırıyorum. Sahip olduğum tüm bilgileri sağlamaya çalışacağım.

root@# docker-compose -f docker-compose-deps.yml up -d
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

Docker Sürümü

root@# sudo docker     version
Client:
Version:      1.9.1
API version:  1.21
Go version:   go1.4.2
Git commit:   a34a1d5
Built:        Fri Nov 20 13:20:08 UTC 2015
OS/Arch:      linux/amd64
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Docker-Compose Sürümü

root@# docker-compose --version
docker-compose version 1.5.2, build 7240ff3

Hizmeti durdurmaya veya başlatmaya çalışırsam böyle olur ...

root@# sudo service docker stop
stop: Unknown instance: 
root@# sudo service   docker start
docker start/running, process 5375

Eğer koşarsam ps aux | grep docker

root@# ps aux | grep docker
root      4233  0.0  0.0  13692  2204 pts/15   S+   10:27   0:00 grep --color=auto docker

Herhangi bir yardım çok takdir edilecektir. Daha fazla bilgiye ihtiyacınız olursa bana bildirin.


1
Lütfen gönderilerinize zarar vermeyin. Bir soru gönderdikten sonra, içeriği Stack Overflow topluluğuna büyük ölçüde lisansladınız (CC-by-SA lisansı altında). Bu gönderinin hesabınızla ilişkisini kesmek isterseniz, bkz. İlişki kesme isteği için uygun yol nedir? .
Bugs

Yanıtlar:


269

15 dakikalık hata ayıklamadan sonra aynı hatayı aldım. Tüm ihtiyaç duyduğu şey bir sudo:) Sudo önekinden kurtulmak için https://docs.docker.com/engine/installation/linux/ubuntulinux/ [Docker grubu oluştur] 'a göz atın .


35
Daha iyi bir hataya ihtiyaçları var = / Bu sorunun 13.000 görüntülemesi var
Jonathan

4
dostum, sadece oy verenler için yaklaşık 30 saat tasarruf ettin ve muhtemelen tasarruf ettiğin zamanın sadece% 1'i
vak

5
sudoBence asıl çözüm docker grubunu oluşturmaktır, ancak bu sadece bir geçici çözüm / hack'tir. Grup oluşturma kısmı burada açıklanmadığından, yalnızca bir bağlantı verildiğinden ve bu bağlantının içeriği değiştiğinden, bunu yalnızca bağlantı cevabı olarak görüyorum ve şimdi esasen faydasız (gerçek düzeltme kısmı için). bu grubu nasıl ekleyeceğinizin açıklamasını ekleyebilir misiniz?
hoijui

3
Ben sudode kötü bir fikir olduğunu düşünüyorum . Docker'ı
jwhitlock

6
Temel olarak, yapmanız gereken tek şey sudo usermod -aG docker $USERve daha sonra işe yarayacak.
user2340939

67

Bu problemi yaşadım ve işleri karıştırmak istemedim sudo. Araştırırken biraz bilgi almaya çalıştım:

docker info

Şaşırtıcı bir şekilde, şu hatayı aldım:

Unix: ///var/run/docker.sock adresindeki Docker daemon soketine bağlanmaya çalışırken izin reddedildi: Get http: ///var/run/docker.sock/v1.38/info : çevir unix / var /run/docker.sock: bağlan: izin reddedildi

Bazı nedenlerden dolayı yeterli ayrıcalığa sahip değildim, aşağıdaki komut sorunumu çözdü:

sudo chown $USER /var/run/docker.sock

Et voilà!


Docker'ı yeniden başlattıktan sonra nasıl olur? Bu yemeği tekrar yapmak zorunda mıyız?
Light.G

Hayır, docker'ı yeniden başlattığınızda çalışmalıdır. Ancak makinenizi yeniden başlatırsanız ne olacağından emin değilim.
madjaoue

Varsayılan olarak Docker docker.sock, dockervarsayılan olarak kök olmayan bir grupla tutulur. Ancak -GDocker daemonunun başlatılması sırasında bunu bayrakla değiştirebiliriz . Benim durumumda, bir grup ekliyorum $USERNAME, yani docker grubu ekliyorum, ardından makinemi yeniden başlatıyorum (ubuntu 16.04, PC). İyi çalışıyor. Ve bu docker belgelerinde tavsiye edilmektedir.
Light.G

3
Benim için de çalışıyor :)
Kamil J.

27

Sorununuzun, Docker kilitlendikten sonra soket dosyasının yeniden oluşturulmadığı eski bir Docker hatası tarafından oluşturulmuş olduğu görülüyor. Sorun buysa, soket dosyasının yeniden adlandırılması yeniden oluşturulmasına izin vermelidir:

$ sudo service docker stop
$ sudo mv /var/lib/docker /var/lib/docker.bak
$ sudo service docker start

Bu hata düzeltildiğinden, hatayı alan çoğu kişi Couldn't connect to Docker daemonmuhtemelen dockergrupta olmadığı ve bu dosyayı okuma iznine sahip olmadığı için alıyor. Birlikte koşmak sudo docker ...bunu düzeltir, ancak harika bir çözüm değildir.

Docker sudo, uygun grup izinlerine sahip kök olmayan bir kullanıcı olarak (olmadan ) çalıştırılabilir . Linux docs yükleme sonrası detaylara sahip. Kısa versiyon:

$ sudo groupadd docker
$ sudo usermod -aG docker $USER
# Log out and log back in again to apply the groups
$ groups  # docker should be in the list of groups for your user
$ docker run hello-world  # Works without sudo

Bu, dockergruptaki kullanıcıların onsuz çalıştırmasına dockerve docker-composekomut vermesine olanak tanır sudo. Docker'ın kendisi bir kök çalıştırır ve bazı saldırılara izin verir, bu nedenle hangi kapsayıcıları çalıştırdığınız konusunda yine de dikkatli olmanız gerekir. Daha fazla ayrıntı için Docker Güvenlik Belgelerine bakın.


Bu soru Linux kurulumuna özeldir ve düzeltme Linux ana sistemindeki değişiklikleri içerir. Aynı ayrıntıya sahip, ancak Windows için benzer bir soru gönderirseniz daha iyi bilgi alırsınız. Kendinizi çözmek için Windows
jwhitlock

10

Ben de aynı sorunu yaşadım. Notlar aldıktan ve bazı hata ayıklama sonuçlarını analiz ettikten sonra, nihayet aynı hatanın ne olabileceğini çözdüm. Önce hizmeti başlatın,

service docker start

Kullanıcınızı docker grubuna dahil etmeyi unutmayın.


Bu hatayla karşılaştığımda root olarak çalışıyordum. sudoBaşkaları için düzeltilmiş gibi görünüyordu -_- Bunu yapmayı unuttuğumun gerçekten de bu olduğunu öğrendiğime sevindim. Çok basit!
Will

8

Kullanıcınızı "docker" grubuna aşağıdaki gibi eklemelisiniz:

sudo usermod -aG docker $ {USER}


5

DockerfileDizinde mevcut kullanıcı tarafından erişilemeyen dosyalar varken bu hatayı aldım . dockerbu nedenle tam bağlamı daemon'a yükleyemedi ve " http + docker: // localunixsocket adresinde Docker daemon'a bağlanılamadı " mesajını getirdi .


2
Teşekkürler! Bu benim için çözdü. Tüm docker komutları çalıştığı için kontrol etmesi kolay, ancak docker-compose çalışmadı. Ayrıca docker-compose başka bir dizinde çalıştı. Çok yanıltıcı hata mesajı, BTW.
Csongor Fagyal

1
Bu gerçekten daha yüksek olmalı
Arlen Anderson

1
Teşekkürler! benim için çalıştı. Kullanmak docker build .herhangi bir izin sorununa yol açacaktır.
everyman

İşe yarayan tek şey - Docker hata mesajları neden bu kadar kötü? Teşekkürler!
coderMe

4

Bunu çözmenin bir yolu, önce dockeraşağıdakileri çalıştırarak kullanıcınızı gruba eklemektir.

sudo usermod -aG docker $USER

ÖNEMLİ: Sisteminizden (yalnızca terminalinizden değil) çıkış yapmayı ve bunun etkili olması için tekrar giriş yapmayı unutmayın!


sudo usermod -aG docker $ {USER} Değişiklikleri uygulamak için ayrıca oturumu
kapatmalı

3

"Ps aux | grep docker" çıktısından, docker daemon çalışmıyor gibi görünüyor. Neyin yanlış olduğunu ve docker'ın neden başlamadığını görmek için aşağıdaki yöntemleri kullanmayı deneyin

  1. Docker günlüklerini kontrol edin

$ sudo tail -f /var/log/upstart/docker.log

  1. Docker'ı hata ayıklama modunda başlatmayı deneyin

$ sudo docker -d -D


2

Benim durumumda docker hizmetiniz durdurulabilir

Docker hizmetini başlatmak için komut:

$ sudo systemctl start docker

Başladığını doğrulamak için komut:

$ sudo docker run hello-world


2

Bu hatanın ortaya çıkmasının bir başka nedeni de: benim için şu dosyadaki hatalı biçimlendirilmiş bir görüntü yolu tanımıydı docker-compose.yml:

  service:
    image: ${CONTAINER_REGISTRY_BASE}/my-service
   ...

Önce bak iyi, ama ortalığı ayarlamıştım CONTAINER_REGISTRY_BASE=eu.gcr.io/my-project/. Görünüşe göre //görüntü yolundaki bu hataya neden oldu.

docker-compose: v.1.21.2
docker: 18.03.1-ce

2

sadece deneyin sudo. İzin sorunu gibi görünüyor!

sudo docker-compose -f docker-compose-deps.yml up -d

benim için çalıştı.


1

Ubuntu 16.04 kullandım ve docker-compose kullandığımda da bu sorunu buldum. Bu komutu çalıştırarak düzelttim.

$ sudo systemctl start docker
$ sudo docker-compose build

1

Varsayılan makineyi silmenizin küçük bir olasılığı var mı? Ancak, önce tüm dosyaların orada olup olmadığını kontrol edin (OSX, diğer sistemlerde benzer)

brew install docker docker-compose docker-machine xhyve docker-machine-driver-xhyve
brew link docker docker-compose docker-machine xhyve docker-machine-driver-xhyve

sudo chown root:wheel /usr/local/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve
sudo chmod u+s /usr/local/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve

Ayrıca, kapsayıcıların bakımı çok daha kolay olduğu için Docker Uygulamasını yükleyin:

brew cask reinstall docker

ans bulucudan Docker uygulamasını başlatır (hizmet tamamen başlayana kadar bekleyin)

Ardından, kurulumu şu şekilde kontrol edin:

docker-machine ls

Listede makine yoksa, bir tane oluşturun ve başlatın:

docker-machine create default
docker-machine start default

Bundan sonra, build, compose ve diğer tüm komutlar düzgün çalışmalıdır.


1

benim durumumda bunun nedeni ubuntu izninin,

  1. Liste öğesi

izni kontrol et

docker info 

onlar sorun izni yazdırırsanız, görüntü açıklamasını buraya girin daha sonra kullanmak

sudo chmod -R 777 /var/run/docker.sock

0

Benim için düzeltme, bu makaleyidocker-compose kullanmanın daha yeni bir sürümünü (1.24) yüklemekti .

Önceki sürüm (1.17) ubuntuvarsayılan depodan yüklendi, ancak daha yeni bir sürüm yükledikten sonra konteyneri başlatmayı başardım. Umarım birine yardımcı olur.


0

Sanırım erişim hakkı yüzünden, sadece yazmalısın

sudo docker-compose-deps.yml up

-1

Benim durumumda, denediğimde aynı hatayı alıyorum docker-compose build ve çözümüm sadece eklendisudo

sudo docker-compose build

-2

Bunu buldum ve sorunumu çözmüş gibiydi.

GitHub Docker Daemon Çökmesini Düzelt

Docker-compose-deps.yml dosyamın içeriğini bağlantıda görüldüğü gibi değiştirdim. Sonra koştum docker-compose -f docker-compose-deps.yml up -d. Sonra onu geri değiştirdim ve bir nedenden dolayı işe yaradı. Sağladığım bağlantıdaki adımlara devam etmek zorunda değildim, ancak ilk iki adım sorunu benim için çözdü.


2
ubuntu 16.04: sadece sudo ekleyin: sudo docker-compose up -d
Moccine

Cevap olarak yeterli değil. Kendi cevabınızı kabul etmek istiyorsanız, sorunun temel nedenini ortaya koymalısınız. Aksi takdirde, başkaları için gerçek bir yanıltıcı olur. BTW, burada başka cevaplar var, yardımcı oldular mı? Sizin tarafınızdan herhangi bir yorum görmediğim için.
Light.G
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.