Docker-compose ile docker'a bağlanamıyor


163

Mac OS 10.8.5'e docker-machine 0.1.0 ve docker-compose 1.1.0'ı yükledim.
Liman işçisi makine normal çalışıyor ve liman işçisi makine ssh ile bağlanabiliyor.

$ docker-machine ls
NAME   ACTIVE   DRIVER       STATE     URL                         SWARM
dev    *        virtualbox   Running   tcp://192.168.99.100:2376   

Ancak docker-compose'den bağlanamıyor.

$ docker-compose up

Http + unix: //var/run/docker.sock adresinden Docker arka plan programına bağlanamadı - çalışıyor mu?

Standart olmayan bir yerdeyse, URL'yi DOCKER_HOST ortam değişkeniyle belirtin.

Dockerfile ve docker-compose.yml burada.

Dockerfile

FROM centos:centos7
DOCKER_HOST tcp://192.168.99.100:2376

liman işçisi-compose.yml

web:
  build: .

Neden bağlanamıyorsunuz? Herhangi bir fikir?


49
docker-machineKök olarak çalışır mı ? Ben sadece Ubuntu aynı sorun ile geldi ve soket izinleri sudooldu - hile yaptı.
SLD

7
Linux'takiler için, docker grubuna eklenmesi gerekebilir .
Batandwa

5
sadece koşmak: sudo docker-compose up
Girish Gupta

Aynı sorunu yaşadım. Bağlantı istasyonunu yeniden başlatmanız gerekir. sudo service docker restartya da sudo service docker startbununla çözdüm.
OM Bharatiya

Ubuntu kullananlar için sudo kullanmalı ve docker grubuna kullanıcı eklememelisiniz . Kabul edilen cevaptaki yorumları görüntüleyin: askubuntu.com/questions/477551/…
kas

Yanıtlar:


89

Docker makinesi çalışıyor. Ancak Docker makinesine bağlanmak için bazı ortamları dışa aktarmanız gerekir. Varsayılan olarak, dockerCLI istemcisi kullanarak http+unix://var/run/docker.sock(hata iletisinde gösterildiği gibi) arka plan programı ile iletişim kurmaya çalışıyor .

Düğmesini kullanarak doğru ortam değişkenlerini dışa eval $(docker-machine env dev)aktarıp tekrar deneyin. docker-machine env devDışa aktaracağı ortam değişkenlerini görmek için de çalıştırabilirsiniz . DOCKER_HOSTHata mesajından da anlaşılacağı gibi, bunlardan birinin olduğuna dikkat edin .


2
Bu komutu ( eval "$(docker-machine env default)") binanın / postactivate'inize her zaman güncel olmasını sağlamak için koyabilirsiniz.
Dannid

1
Bin / postactivate dosyasını nerede bulabilirim?
Lukas Schulze

Veya liman işçisini kurmayı unuttunuz: $ eval $(docker-machine env dev) Command 'docker-machine' not found, but can be installed with: sudo snap install docker
R OMS

226

Benim için basit bir çözüm: sudo docker-compose up


GÜNCELLEME 2016-3-14: Docker kurulum işleminin bir noktasında (veya docker-compose?) Kullanıcı adınızı "docker" grubuna eklemek için bir öneri ve örnek vardır. Bu, tüm docker komutlarından önce "sudo" ya ihtiyaç duymamanızı sağlar.

~ > docker run -it ubuntu /bin/bash
root@665d1ea76b8d:/# date
Mon Mar 14 23:43:36 UTC 2016
root@665d1ea76b8d:/# exit
exit
~ > 

Yükleme komutlarının çıktısına dikkatlice bakın (hem docker hem de docker-compose için 2. yükleme) ve gerekli adımı bulacaksınız. Ayrıca burada da belgelenmiştir: https://subosito.com/posts/docker-tips/

Sudo? Hayır!

Her komut verdiğinizde sudo docker yazmaktan sıkıldınız mı? Evet, bununla başa çıkmanın bir yolu var. Doğal olarak docker kök kullanıcı gerektirse de, docker işlemleri için root eşdeğeri bir grup verebiliriz.

Docker adında bir grup oluşturabilir, ardından istediğiniz gruba bu kullanıcıyı ekleyebilirsiniz. Liman hizmetini yeniden başlattıktan sonra, her liman işleminde kullanıcının sudo yazmasına gerek kalmaz. Kabuk komutlarında nasıl görünüyor? bir kök olarak, işte başlıyoruz:

> sudo groupadd docker
> sudo gpasswd -a username docker
> sudo service docker restart 

Bitti!

GÜNCELLEME 2017-3-9

Docker kurulum talimatları burada güncellenmiştir.

Linux için kurulum sonrası adımlar

Bu bölüm, Linux ana bilgisayarlarını Docker ile daha iyi çalışacak şekilde yapılandırmak için isteğe bağlı prosedürler içerir.

Docker'ı kök olmayan bir kullanıcı olarak yönetme

Docker arka plan programı, TCP bağlantı noktası yerine bir Unix soketine bağlanır. Varsayılan olarak Unix soketi kullanıcı köküne aittir ve diğer kullanıcılar sokete yalnızca sudo kullanarak erişebilir. Docker arka plan programı her zaman kök kullanıcı olarak çalışır.

Docker komutunu kullanırken sudo kullanmak istemiyorsanız, docker adlı bir Unix grubu oluşturun ve bu gruba kullanıcılar ekleyin. Docker arka plan programı başladığında, Unix soketinin sahipliğini docker grubu tarafından okunabilir / yazılabilir yapar.

Liman işçisi grubunu oluşturmak ve kullanıcı eklemek için:

# 1. Create the docker group.
$ sudo groupadd docker

# 2. Add your user to the docker group.
$ sudo usermod -aG docker $USER

# 3. Log out and log back in so that your group membership is re-evaluated.

# 4. Verify that you can run docker commands without sudo.
$ docker run hello-world

Bu komut bir test görüntüsünü indirir ve bir kapta çalıştırır. Kap çalıştırıldığında, bir bilgi iletisi yazdırır ve çıkar.


1
Aynı şekilde
sudo'nun

12
Oturumu kapatmak yerine ... komutunu kullanabilirsiniz:newgrp docker
Thiago Falcao


1
Re: "Benim için basit bir çözüm: sudo docker-compose up". Bunu denediğimde, alıyorum:sudo: docker-compose: command not found
mblakesley

38

Docker'ı kullanmaya başladıysanız sudo, docker-compose uygulamasını sudo Like ile çalıştırmalısınız :sudo docker-compose up


Bunun sudo docker-compose buildyerine koştuğumda benim için çalıştı docker-compose build.
anms_pro

26

Varsayılan olarak, docker arka plan programı her zaman kök kullanıcı olarak çalışır sudo.

Docker komutunu kullanırken sudo kullanmak istemiyorsanız, docker adlı bir Unix grubu oluşturun ve bu gruba kullanıcılar ekleyin. Docker arka plan programı başladığında, Unix soketinin sahipliğini docker grubu tarafından okunabilir / yazılabilir yapar.

Liman işçisi grubunu oluşturmak ve kullanıcı eklemek için:

  1. Liman işçisi grubunu oluşturun.

    $ sudo groupadd docker

  2. Kullanıcıyı docker grubuna ekleyin.

    $ sudo usermod -aG docker $USER

  3. Oturumu kapatın ve grup üyeliğinizin yeniden değerlendirilmesi için yeniden oturum açın.

  4. Sudo olmadan docker komutları yapabileceğinizi doğrulayın.

    $ docker run hello-world

Bu komut bir test görüntüsünü indirir ve bir kapta çalıştırır. Kap çalıştırıldığında, bir bilgi iletisi yazdırır ve çıkar.

Yukarıda özetlenen adımlar resmi Docker belgelerinden gelir .


Docker yüklü pencerelerde bunu nasıl yapabiliriz?
Jeff Cook

Bunun yanı sıra, docker-compose düzeltmek için yaptığım kullanıcı docker-composesahibi olarak yürütme /usr/local/bin/docker-composeve sonra de hizmet yeniden başlatmak ayarlandı
Sam

groupüyeliği ile su - $USERoturum açıp kapatabilirsiniz
Stuart Cardall

20

Hata aldığınızda :

HATA: Docker arka plan programına http + docker: // localhost adresinden bağlanamadı - çalışıyor mu?

Çözüm olacaktır:

  1. İlk olarak, Docker Hizmetinin uzak / yerel makinenizde beklendiği gibi Açık ve Çalıştığını doğrulamayı deneyin :sudo service docker status

    Çalışmıyorsa sudo service docker start veya sudo systemctl start docker(bazı linux sürümlerine bağlıysa, Docker başlangıç talimatlarına bakın ).

  2. İkinci olarak, docker'ı sudo olarak başlatın sudo docker-compose up


16

sudo systemctl start docker - Docker hizmetini başlatmak için.

sudo docker-compose up Daha sonra.

Fedora 26 var ve aynı sorunu çözmeye çalışıyorum sonunda Fedora Geliştiricileri sayfasında Docker Compose ve daha sonra bana yardımcı olan Fedora Geliştiricileri sayfasında Docker girdim .

Muhtemelen, topluluk tarafından sistemle başlamak ve her zaman arka planda çalıştırmak için düşünülen liman işçisi hizmeti, ama benim için çok açık değildi ve bu yüzden böyle bir popüler cevabın neden olmadığını düşünebilmemin nedeni budur.

On Fedora Geliştiriciler sayfa sistemiyle başlamak Docker etkinleştirme talimat var:

sudo systemctl enable docker


Değiştir systemctlile launchctlsize mac çalıştırıyorsanız.
Rohit Swami

6

Linux'taysanız docker-machine, yalnızca Windows ve Mac bilgisayarlarda varsayılan olarak yüklendiği için yüklememiş olabilirsiniz.

Eğer öyleyse , Linux sürümünüze nasıl kuracağınıza ilişkin talimatları bulmak için https://docs.docker.com/machine/install-machine/ adresine gitmeniz gerekir .

Yükledikten sonra, docker-compose upyukarıda listelenen herhangi bir şeyi denemeden önce çalışmayı tekrar deneyin .

Umarım bu birine yardımcı olur. Bu, Fedora 25'teki şeytan kutusu kurulumum için çalıştı.


5

Kullanıcıları docker grubuna eklemenin yanı sıra, sudotekrar tekrar yazmamak için aşağıdaki dockergibi komutlar için bir takma ad da oluşturabilirsiniz :

alias docker-compose="sudo docker-compose"
alias docker="sudo docker"

4

docker-machine kullanıyorsanız, env değişkenini kullanarak ortamı etkinleştirmeniz gerekir . docker-machine kullanmıyorsanız komutlarınızı sudo ile çalıştırın


3

Günlüğü kontrol eden var mı?

Benim durumumda hata mesajı /var/log/upstart/docker.log:

Listening for HTTP on unix (/var/run/docker.sock) 
[graphdriver] using prior storage driver "aufs" 
Running modprobe bridge nf_nat failed with message: , error: exit status 1 
Error starting daemon: Error initializing network controller: Error creating default "bridge" network: can't find an address range for interface "docker0" 

Belirtilen değer vpn açık vardı, yani: $ sudo service openvpn stop $ sudo service docker restart $ docker-compose up|start $ sudo service openvpn start çözüm oldu.


3

@Srfrnk tarafından verilen yanıt benim için çalışıyor.

Benim durumumda, bir sonraki docker-compose.yml dosyası vardı:

  nginx:
    build:
      context: ./
      dockerfile: "./docker/nginx.staging/Dockerfile"
    depends_on:
      - scripts
    environment:
      NGINX_SERVER_NAME: "some.host"
      NGINX_STATIC_CONTENT_OPEN_FILE_CACHE: "off"
      NGINX_ERROR_LOG_LEVEL: debug
      NGINX_BACKEND_HOST: scripts
      NGINX_SERVER_ROOT: /var/www/html
    volumes:
      - ./docker-runtime/drupal/files:/var/www/html/sites/default/files:rw
    ports:
      - 80:80

./docker-runtimesahip ve grup - rootdiğer dosyaların sahibi - benim kullanıcı. İnşa etmeye çalıştığımdanginx

Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

Ben eklendi ./docker-runtimeetmek .dockerignoreve bu benim sorunu çözüldü.


3

çalışırken docker-compose pull- hata altında alıyordum

HATA: http + docker: // localhost adresindeki Docker arka plan programına bağlanamadı

çalışıyor mu?

çözüm -

sudo service docker start 

sorun çözüldü


2

Aynı belirtiler yaşadım.

Sadece docker-compose build docker psçalışırken sadece fark . Sürümü 2.xile de oldu 3.x. Yeniden dockerbaşlatılan hizmet, sonra makine ... Hatta yeniden yüklendi docker+ docker-compose.

Hiçbir şey yardımcı olmadı ama her şeyi denedim.

Sonunda kullanarak Dockerfile "elle" inşa etmeye çalıştım docker build.

Görünüşe göre Dockerbağlam içindeki bir dosya / klasörde izin sorunu vardı . Derleme başlatılırken içeriği okumaya çalışıyordu ve uygun bir hata mesajı ile başarısız oldu. Ancak bu hata mesajı vermedi yayılması docker-composehangi yalnızca gösterileriCouldn't connect to Docker daemon at http+unix://var/run/docker.sock - is it running?

Çözümün .dockerignorederleme için gerekli olmadığından dosya / klasörü dosyaya eklediğini bulduktan sonra . Başka bir çözüm için olabilirdi chownya chmodda.

Her neyse, bu gerçekten aynı şeyle karşılaşan birinin gerçekten ilgisi olmayan dockerve yanıltıcı hata mesajının görüntülenmesine yardımcı olabilir.


Aynı sorun vardı: bağlı bir birimde dosya izinleri. Benim durumumda, bir Docker birimine konmuş olan kökün sahip olduğu bir SSL sertifikam vardı. chown/ chmoddüzeltildi. Korkunç hata mesajı ama üzerinde çalışıyorlar. Bkz. Github.com/docker/compose/issues/5318
bcattle

2

$ sudo docker-compose up

Grup docker'a $ USER eklemek için yukarıdaki yanıtta olduğu gibi adımları takip ettim. çünkü docker kurulumunda docker adında bir grup otomatik olarak oluşturuldu çünkü yeni bir grup docker eklemek istemiyordu.

Docker CE kuruldu ve çalışıyor. Liman işçisi grubu oluşturulur, ancak gruba kullanıcı eklenmez. Docker komutlarını çalıştırmak için sudo kullanmanız gerekir. Ayrıcalıklı olmayan kullanıcıların Docker komutlarını çalıştırmasına izin vermek ve isteğe bağlı diğer yapılandırma adımları için Linux yükleme sonrası işlemine devam edin.

ancak docker-compose up kullanımı da işe yaramadı. Önceki aynı hatayı verdi. Benim durumumda (Ubuntu 18.10) sudo docker-compose up sorunu düzeltti.

ps: @ Tavsiye için teşekkürler.


1
Belki ilk önce çözümü ve altındakileri açıklayanlar daha iyi olur. Ayrıca, cevabınızı daha iyi biçimlendirmek için editördeki bu düğmeleri kullanabilirsiniz.
Tiw

2

Aptalca olduğunu biliyorum, ama benim durumumda denedim sudove bir cazibe gibi çalıştı.

sizin durumunuzda, şunu deneyin: $ sudo docker-compose up


1

bunu dene:

sudo ln -s / usr / local / bin / docker-compose / usr / bin / docker-compose


1

Aşağıdaki adımları kullanarak sorunu çözdüm

$ sudo service docker status
$ sudo service docker start
$ sudo docker-compose up

şimdi docker-compose up çalışıyor


0

Benim için Docker'ı yükseltmeye başladım ve yarı yolda iptal ettim. Docker'ın çalışmadığını fark etmedim (eğer öyleyse, Macbook'umun üst gezinme çubuğunda, kalan pil, zaman vb.İle bir simge var). Bir kez başlattım ve yükseltmeyi bitirdikten sonra docker-compose uptekrar çalıştı!


0

Kurulumumda bu hata için iki durum var:

  • __pycache__ kapsayıcı içindeki tümleştirme sınamalarını çalıştırdıktan sonra kök kullanıcı tarafından oluşturulan dosyalara docker (orijinal sorununuzu anlatır) ve docker-compose (docker ana bilgisayarını belirsiz bir şekilde anlatır) için erişilemez;
  • microk8s Ben duruncaya kadar portumu bloke ettim.


0

Oturumu kapatıp tekrar açmak bana yardımcı oldu. Benim durumumda yeni kurulum oldu, yeni bir kullanıcı oluşturdum, yeni grup daha sonra kullanıcıyı docker grubuna ekledi.

çıkış çıkış

sonra tekrar sunucuya ssh


0

Aşağıdakiler benim için çalıştı, hile hangi kısmı yaptı emin değilim:

julian:project$ sudo service docker status
julian:varys$ 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 Wed 2020-07-15 01:21:16 UTC; 24min ago
     Docs: https://docs.docker.com
 Main PID: 6762 (dockerd)
    Tasks: 25
   CGroup: /system.slice/docker.service
           └─6762 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

julian:project$ export DOCKER_HOST=unix:///run/containerd/containerd.sock

julian:project$ sudo groupadd docker
groupadd: group 'docker' already exists
julian:project$ sudo gpasswd -a $USER docker
Adding user ubuntu to group docker
julian:project$ newgrp docker

julian:project$ ls -ln /var/run/ | grep docker
drwx------  5   0   0  120 Jul 15 01:10 docker
-rw-r--r--  1   0   0    4 Jul 15 01:10 docker.pid
srw-rw----  1   0 999    0 Jul 15 01:10 docker.sock

julian:project$ sudo rm /var/run/docker.sock                                                                                                                                                                                            
julian:project$ sudo rm /var/run/docker.pid

julian:project$ sudo service docker restart  
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.