Docker komutu Docker arka plan programına bağlanamıyor


246

Docker'a taşınmak istiyorum, bu yüzden onunla uğraşmaya başladım. Docker'ı bir VirtualBox Ubuntu 15.10 (Wily Werewolf) kurulumuna yükledim ve burada önerildiği gibi daha sonra temel bir nginx Docker görüntüsü çalıştırmayı denedim :

$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Docker'ın çalışıp çalışmadığını kontrol ettim:

$ sudo service docker status
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since vr 2015-11-06 08:41:48 CET; 15min ago
     Docs: https://docs.docker.com
 Main PID: 7542 (docker)
   CGroup: /system.slice/docker.service
           └─7542 /usr/bin/docker daemon -H fd://

nov 06 08:41:47 kramer65-VirtualBox systemd[1]: Starting Docker Application Container Engine...
nov 06 08:41:47 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:47.900410966+01:00" level=info msg="API ...ock"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.033514149+01:00" level=info msg="Fire...lse"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.141594321+01:00" level=info msg="Defa...ess"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.416294436+01:00" level=warning msg="Y...it."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.565507576+01:00" level=info msg="Load...rt."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567907022+01:00" level=info msg="Load...ne."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567945214+01:00" level=info msg="Daem...ion"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567969891+01:00" level=info msg="Dock....9.0
nov 06 08:41:48 kramer65-VirtualBox systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.

Bu, Docker arka plan programının aslında zaten çalıştığını, ancak Docker arka plan programını manuel olarak başlattığımdan emin olmak için:

$ sudo docker daemon
INFO[0000] API listen on /var/run/docker.sock           
INFO[0000] [graphdriver] using prior storage driver "aufs" 
INFO[0000] Firewalld running: false                     
INFO[0000] Default bridge (docker0) is assigned with an IP address XXX.XX.X.X/XX. Daemon option --bip can be used to set a preferred IP address 
WARN[0000] Your kernel does not support swap memory limit. 
INFO[0000] Loading containers: start.                   

INFO[0000] Loading containers: done.                    
INFO[0000] Daemon has completed initialization          
INFO[0000] Docker daemon                                 commit=76d6bc9 execdriver=native-0.2 graphdriver=aufs version=1.9.0

Daha sonra görüntüyü tekrar çalıştırmayı denedim, ancak aynı sonuçla:

$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Komut sudo'ing denedim, ama boşuna. Burada neyi yanlış yapıyorum?


1
aynı sorun. Ben de Ubuntu 15.10'dayım :(
Daniel Loureiro

1
aynı sorun, ubuntu 15.10
Lucas Tettamanti

1
Sadece docker hizmetinizi yeniden başlatın. Thanks @jim <pre> sudo service docker restart </pre>
Nasruddin

1
Nasruddin, bu kesinlikle benim için çalışmadı ... :-(
Rafael_Espericueta

1
Çalışması için makineyi yeniden başlatmam gerekiyordu.
romaroma

Yanıtlar:


443

Geçerli kullanıcınızı docker grubuna aşağıdaki gibi eklemeniz gerekir:

sudo usermod -aG docker $(whoami)

sonra sistemden çıkıp tekrar giriş yapın veya sistemi yeniden başlatın. tarafından testdocker version

docker-engine'in nasıl kurulacağı hakkında daha fazla bilgi için docker belgelerini takip edin


aptal ama benim için de çalıştı @RobinLoxley, bu sadece bir yorum değil, gerçek bir cevap olmalı, eğer sen göndermek eğer bana bildirin, ben bir upvote verecek;)
benka

9
"Oturumdan çık & sisteme tekrar giriş yap ya da sistemi yeniden başlat" altını
Michele

3
@Junaid cevabı, benim gibi, uygulamalarınızı yeniden başlatmak istemezseniz tembellik / giriş adımından nasıl kaçınacağınızı gösterir;)
brandizzi

Bu, Docker eğitiminde tam olarak belirtilen şeydir, ancak tekrar giriş yapmak benim için işe yaramadı. Çalışması için sistemi yeniden başlatmam gerekiyordu.
aalaap

4
Docker sürüm bilgilerini görüyorum, ancak çıktı sonunda görüyorumCannot connect to the Docker daemon. Is the docker daemon running on this host?
ghanbari

137

Kullanıcıyı docker grubuna ekleyin

  • Zaten yoksa docker grubunu ekleyin:

    sudo groupadd docker

  • Bağlı kullanıcı "$ {USER}" docker grubuna ekleyin:

    sudo gpasswd -a ${USER} docker

  • Docker arka plan programını yeniden başlatın:

    sudo service docker restart

  • Ya yapın newgrp dockerveya gruplar değişiklikleri etkinleştirmek için giriş / çıkış yapın.


1
newgrp dockerOturum açma oturumu için değil, kabuk için yerel görünüyor . Bu, man sayfasından hiç belli değil.
bergey

1
Benim için çalıştı. Teşekkürler!
Apokai

Çalışan tek cevap! Özel bir bulut Linux makinesinde ve hala çalıştı!
Meghna Natraj

Ubuntu 18.04 üzerinde çalıştı! Teşekkürler
Kshitij Saraogi

33

Genellikle, aşağıdaki komut hile yapar:

sudo service docker restart

Bu, docker startDocker'ın zaten çalışmakta olduğu durumlar yerine .

Bu, önerilen şekilde ve başka bir cevapta ve bu GitHub sorununda çalışırsa, kendinizi docker grubuna eklemediyseniz, bunu çalıştırarak yapın:

sudo usermod -aG docker <your-username> 

Ve büyük olasılıkla gitmekte fayda var.


Buna çarpışan herhangi birine gelince, bazı işletim sistemlerindeki docker, kurulduktan hemen sonra başlamaz ve sonuç olarak aynı can't connect to daemon messagegörünür. Bu durumda, önce aşağıdakileri yaparak docker hizmetinizin durumunu kontrol ederek Docker'ın gerçekten çalışmadığını doğrulayabilirsiniz:

sudo service docker status

Çıktı şuna benziyorsa: docker stop/waitingBunun yerine docker start/running, process 15378Docker'ın aktif olmadığı anlamına gelir. Bu durumda, aşağıdakilerle başlattığınızdan emin olun:

sudo service docker start

Ve daha önce olduğu gibi, büyük olasılıkla gitmek için iyi olacaksınız.


18

self to note: dockerKomutu çalıştırmayı unuttuğumda sorunun başlığından hata alıyorum sudo:

sudo docker run ...

[Ubuntu 15.10]


12

Aynı sorun vardı ve benim için işe
yarayan şuydu: /var/run/docker.sock'un sahipliğini kontrol etmek

ls -l /var/run/docker.sock

Sahip değilseniz, komutla sahipliği değiştirin

sudo chown *your-username* /var/run/docker.sock

Ardından devam edip docker komutlarını sorunsuz bir şekilde yürütmeyi deneyebilirsiniz: D


2
Diğer olasılıkları tükettikten sonra, bu benim için Sabayon / Gentoo Linux üzerinde çalışmayı başardı.
gerrit_hoekstra

Bu dosyanın sahibi rootancak dockergruptur. Doğru yaklaşım dockerDocker'in belgelerine göre mevcut kullanıcınızı gruba atamaktır :sudo groupadd docker && sudo usermod -aG docker $USER
Lucas Bustamante

9

Her şeyi yükledikten ve hizmeti başlattıktan sonra terminalinizi kapatıp tekrar açın, ardından resminizi çekmeyi deneyin

Düzenle

Yine bu sorunu yaşadım , yukarıdaki çözüm işe yaramazsa, aşağıdaki komut olan bu çözümü deneyin

sudo mv /var/lib/docker/network/files/ /tmp/dn-bak

hususlar

Yukarıdaki komut muhtemelen ağ docker sorunları yaşıyorsanız, yine de bu sorunu çözer, onaylamak için aşağıdaki komutla günlüğe bakın

tail -5f /var/log/upstart/docker.log

Çıktıda böyle bir şey varsa

FATA[0000] Error starting daemon: Error initializing network controller: could not delete the default bridge network: network bridge has active endpoints 
/var/run/docker.sock is up

Gerçekten ağ sorunlarınız var, ancak bir dahaki sefere yeniden başlattığınızda ( güncelleme , 2 ay tekrar sorun yok) işletim sisteminizin bu sorunu tekrar alacağını ve bir hata veya kurulum sorunu olup olmadığını henüz bilmiyorum

Docker sürümüm

Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/amd64

8

Ubuntu'ya docker'ı yükledikten sonra, aşağıdaki komutu çalıştırdım:

sudo service docker start

Bunu denediniz mi?


6

Ben de aynı problemi yaşadım. Bunu çözmek için iki gündür mücadele ediyoruz.

Sadece yaptığım zaman çalıştı:

  1. Göre Docker en Eğitimi , zaten kullanmakta eklenmez ise Docker anahtarı eklemek gerekir:

    $ sudo wget -qO- https://get.docker.com/gpg | sudo apt-key add -

  2. Ardından, aşağıdakileri kullanarak kendinize docker ayrıcalıkları verdiğinizden emin olun:

    $ sudo usermod -aG docker $USER

Umarım bu da size yardımcı olur.


2
Adım 2 aşağıdaki gibi basitleştirilebilir:sudo usermod -aG docker $USER
johntellsall

5

root ( sudo su) olarak girin ve şunu deneyin:

unset DOCKER_HOST
docker run --name mynginx1 -P -d nginx

Burada da aynı sorunu yaşıyorum ve docker komutu sadece root olarak çalışıyor ve bununla da DOCKER_HOST boş

PS: ayrıca Ubuntu üzerine kurmanın doğru ve resmi yolunun bu " wget " şeyle değil , uygun 15.10'larda depolamak olduğunu unutmayın .


o "wget" şey sadece apt kaynağına docker deposunu koymak .... yani aynı şeyi elle "doğru ve resmi bir şekilde" yapmak istendi ....
Alar

1
Korkarým yanýlýyorsun Alar. "Wget" yöntemi, apt kaynağınıza docker deposunu ekleyecektir, bu da iyidir, ancak DOCKER_HOST env var'ı ayarlamak gibi diğer birçok kötü şeyi de yapar ve bu da docker'ın kutudan çıkmasını önler. Her iki yöntem de her ikisi de aynı repo docker eklemek çünkü değil.
Daniel Loureiro

5

İçin OSX :

Docker'ı açtıktan ve Quickstart Terminal (' https://docs.docker.com/engine/installation/mac/ ) üzerinden' varsayılan 'makineyi başlattıktan sonra , docker komutlarını deneyin ve bu "docker arka plan programına bağlanamıyor" iletisini alıyorsunuz , bazı env değişkenleri ayarlamanız gerekiyor :

eval "$(docker-machine env default)"

Sonra docker run hello-worldher şeyin şeftali olup olmadığını görmek için deneyin .


5

Makinenizi yeniden başlatmayı deneyenler için, docker env belgelerinde belirtildiği gibi DOCKER_HOST ortam değişkeninin ayarının kaldırılması ve geri kalan her şey

sudo service docker restart

Sadece bu, makineyi yeniden başlattıktan sonra bile benim için hile yaptı.


2
Bu yalnızca oturum kapatıp oturum açarsanız gereklidir.
Zhang LongQI

4

"Root" dışı erişim verme istasyonundan

Henüz yoksa docker grubunu ekleyin.

$ sudo groupadd docker

Bağlı kullanıcı "$ {USER}" docker grubuna ekleyin.

Kullanıcı adını, tercih ettiğiniz kullanıcıyla eşleşecek şekilde değiştirin.

Bunun etkili olması için oturumu kapatıp tekrar giriş yapmanız gerekebilir.

$ sudo gpasswd -a ${USER} docker

Docker arka plan programını yeniden başlatın.

$ sudo service docker restart

3

Bu soru şu anda bir Google aramasında 3 numara. Bu problemi Linux sistemimde çözmek için biraz araştırma yaptıktan sonra bu cevabı yazacağımı düşündüm. Orijinal yazı, sorunun Ubuntu'da olduğunu belirtiyor, ancak Fedora'yı kullanırken de sorun yaşadım. Bunu akılda tutarak, sorunu çözmek için yaptığım şey bu.

Fedora 22'de

Docker Kurulumu:

$> curl -fsSL https://get.docker.com/ | sh

Docker'ı kurduktan sonra:

Bir kullanıcının docker grubuna eklenmesi gerekir.

$> sudo usermod -aG docker

Docker arka plan programının başlatılması gerekiyor

$> sudo service docker start

Daemon'u önyüklemede başlayacak şekilde ayarlayabilirsiniz

$> sudo chkconfig docker on

Docker hizmetinin çalıştığını doğrulayabilirsiniz

$> service docker status

Ve son bir son kontrol

$> docker run hello-world

Fedora 23'te bu grup çağrılabilir dockerroot. Ayrıca, muhtemelen curl ... | shdaha sonra güncellenebilir depodan (yerine ) yüklemek istersiniz :dnf install docker
basic6

Birçoğunun bir grup "liman işçisi" yok, bu yüzden önce onu eklemeli groupadd dockerve sonra kullanıcı sudo usermod -aG docker your_username
adınıza eklemeliyiz

2

Çalıştırdığınız komutla "sudo" komutunu kullanmaya çalışın.


"Komut sudo'ing denedim, ama boşuna. Burada neyi yanlış yaptığımı bilen var mı? Tüm ipuçları bekliyoruz!"
RhinoDevel

2

Docker'ı çalıştırırken aynı sorunla karşılaşıyorum.

sudo kullanıcısı olarak komutları çalıştırabilirsiniz :

sudo docker ***your command here***

2

Ubuntu için:
Docker'ı güncellediğimde benimle oldu.
Hizmetin ve soketin maskesini kaldırmanız ve ardından hizmeti yeniden başlatmanız gerekir.

Aşağıdaki benim için çalıştı:

systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service

Sahnelerin arkasında
sistemde olanlar, bir birimi / dev / null'a bağlayarak otomatik olarak veya manuel olarak tamamen başlatılamaz olarak işaretleme yeteneğine sahiptir. Buna ünitenin maskelenmesi denir ve mask komutuyla mümkündür.

sudo systemctl mask docker.service

Maskelenmiş hizmetler listesini aşağıdakileri kullanarak kontrol edebilirsiniz:

sudo systemctl list-unit-files

Sudo systemctl list-unit-files çıktısı

Otomatik / manuel servis başlatmayı etkinleştirmek için aşağıdakileri kullanarak maskesini kaldırmanız gerekir:

sudo sytemctl unmask docker.service

Şimdi hizmet aşağıda gösterildiği gibi etkinleştirilecektir resim açıklamasını buraya girin


1

Docker, başlatma sırasında root'a ait olan bir unix soketine bağlandığından, docker komutlarıyla birlikte 'sudo' kullanılması işe yarayacaktır.


1
  1. Ben de aynı sorunu yaşadım. Sorun docker-daemon ve docker-client'a tahsis edilmiş soketlerdeydi.
  2. İlk olarak, docker.sock üzerindeki docker-client için izin ayarlanmadı "sudo usermod -aG docker $ USER" kullanarak ayarlayabilirsiniz
  3. Sonra docker-istemcisinin çalıştığı bash dosyanızı kontrol edin, benim için 0.0.0.0:2375, docker-daemon unix soketinde çalışırken (dockerd yapılandırma dosyasında ayarlandı).
  4. Sadece bash satırını yorumlayın ve işe yarayacaktır.
  5. Ancak unix soketi yerine TCP bağlantı noktasında çalışmasını istiyorsanız, dockerd'ın yapılandırma dosyasını değiştirin ve 0.0.0.0.2375 olarak ayarlayın ve satırı olduğu gibi bash'da tutun veya 0.0.0.0 olarak ayarlayın: 2375.

1

Belki de bu hata mesajı son derece yararsız olduğu için birisine yardımcı olacaktır ve tüm standart izin adımlarını boşuna kaç defa geçirdim.

Docker, sisteminiz doğru şekilde kurulmasına rağmen, erişimi engelleyen bazen hayalet ortam değişkenlerini yerinde bırakır. Aşağıdaki kabuk komutları, bir noktada çalışmasını sağladıysanız ve yeniden başlattıktan sonra işbirliğini durdurduysa, yeniden erişilebilir hale getirebilir:

unset DOCKER_HOST
unset DOCKER_TLS_VERIFY
unset DOCKER_TLS_PATH
docker ps

Daha önce çalışan bir docker kurulumu yaptım ve dizüstü bilgisayarımı yeniden başlattıktan sonra çalışmayı reddetti. Doğru liman işçisi kullanıcı grubuna eklenmiş, vb soket üzerinde doğru izinlere vardı, ama yine de çalışamadı docker login, docker run ...vb Bu benim için düzelttim. Ne yazık ki bunu her yeniden başlatmada çalıştırmam gerekiyor. Bu, birkaç github sorununda da geçici bir çözüm olarak belirtilmiştir, ancak bunun Docker'ın çalışmasını düzeltmek için kalıcı bir engel olduğu bir hata gibi görünmektedir (not: OSX'te Arch Linux'tayım, ancak bu aynı sorundu. ben mi).


1

Ubuntu 16.04'te test edildi

# Create the docker group and add your user to the docker group
groupadd docker
usermod -aG docker $USER
newgrp docker

# Configure docker service to be exposed
mkdir -p /etc/systemd/system/docker.service.d
echo -e '[Service]\nExecStart=\nExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376' >> /etc/systemd/system/docker.service.d/override.conf

# restart service
systemctl daemon-reload
service docker restart

0

Amazon EC2 örneğinde de aynı hatayla karşılaştım. Örnek yeniden başlatıldıktan sonra sorun giderildi.


0

Geçerli kullanıcıyı docker grubuna ekle:

sudo usermod -aG docker $(whoami)


Lütfen bunu kod olarak biçimlendirin! Ve bu komutu açıklayın. Ve --seçeneklerin uzun (ile başlayan ) sürümlerini kullanın .
buhtz

0

İçin Ubuntu 16.04

İç dosya /lib/systemd/system/docker.servicedeğişikliği:

ExecStart=/usr/bin/dockerd fd://

ile:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375

İç dosya /etc/init.d/dockerdeğişikliği:

DOCKER_OPTS=

ile:

DOCKER_OPTS="-H tcp://0.0.0.0:2375"

ve ardından bilgisayarınızı yeniden başlatın.

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.