Nie można połączyć się z demonem Dockera pod adresem unix: /var/run/docker.sock. Czy demon Dockera jest uruchomiony?

172

Zastosowałem każde rozwiązanie dostępne w Internecie, ale nadal nie mogę uruchomić Dockera.

Chcę używać Scrapy Splash na moim serwerze.

Oto historypolecenia, które uruchomiłem.

docker run -p 8050:8050 scrapinghub/splash
sudo docker run -p 8050:8050 scrapinghub/splash
sudo usermod -aG docker $(whoami)
sudo docker run -p 8050:8050 scrapinghub/splash
newgrp docker
sudo docker run -p 8050:8050 scrapinghub/splash
reboot
sudo docker run -p 8050:8050 scrapinghub/splash
docker run -p 8050:8050 scrapinghub/splash

Widać, że również próbowałem zrestartować serwer, ale to nie pomogło.

zobacz wyjście ps -aux | grep docker

root@mani:/var/www/html# ps aux | grep docker
root      8524  0.0  0.8 127904 13964 ?        Ssl  17:21   0:00 /usr/bin/dockerd --raw-logs
root      8534  0.0  0.3  90588  5012 ?        Ssl  17:21   0:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc
root      8543  0.0  0.0   8812   764 pts/1    S+   17:21   0:00 grep --color=auto docker
root     16356  0.0  0.0  17200   964 pts/1    S    17:14   0:00 newgrp docker
root     20080  0.0  0.0  17200   964 pts/1    S    17:06   0:00 newgrp docker
root     30221  0.0  0.0  17200   964 pts/1    S    17:09   0:00 newgrp docker
Umair Ayub
źródło
Jeśli uruchomisz ps aux | grep docker, czy widzisz uruchomiony proces demona?
Rome_Leader
Możliwy duplikat: stackoverflow.com/questions/21871479/…
BMitch
@Rome_Leader zobacz wyniki w moim pytaniu ...
Umair Ayub
3
spróbuj: sudo service
docker
2
możesz zobaczyć status sudo service docker status
swojego demona docker

Odpowiedzi:

161

Możesz to wypróbować:

systemctl start docker

U mnie to zadziałało.

PS: jeśli są polecenia, których nie możesz obejść się bez sudo, spróbuj tego:

gpasswd -a $USER docker
H.Gmz
źródło
10
Uruchamiając pierwszą komendę, wyskoczył błąd: Failed to start docker.service: Unit docker.service is masked.Musiałem więc uruchomić następująco: systemctl unmask docker.service systemctl unmask docker.socket systemctl start docker.service
Chris Phan
50

Możesz otrzymać ten błąd, jeśli docker nie zamknie się poprawnie. Poniższa odpowiedź dotyczy pakietu przyciągania platformy Docker.

Uruchom snap logs dockeri poszukaj następujących:

Error starting daemon: pid file found, ensure docker is not running or delete /var/snap/docker/179/run/docker.pid

Usunięcie tego pliku i ponowne uruchomienie dockera zadziałało.

rm /var/snap/docker/<your-version-number>/run/docker.pid
snap stop docker
snap start docker

Upewnij się, aby wymienić <your-version-number>‍z odpowiednim numerem wersji.

niklas
źródło
Jak mogę temu zapobiec? Za każdym razem, gdy włączam komputer, muszę usunąć docker.pid!
Hamidreza
47

Po prostu biegnij

sudo dockerd

dockerd to usługa demona dla kontenerów dockerowych, ponieważ nie działa w tle, nie możemy podejmować żadnych działań związanych z usługą, którą trzeba zrestartować.

Yash Pokar
źródło
10
To jedyne polecenie, które działa dla mnie. Myślę, że to śmieszne, że trzeba przeskoczyć przez tak wiele przeszkód, aby uruchomić i uruchomić Dockera.
Homunculus Reticulli
3
Daje mi błądError starting daemon: Devices cgroup isn't mounted
Vineet 'DEVIN' Dev
@fepegar Prawdopodobnie nie masz poprawnie zainstalowanego
dockera
@YashPokar rzeczywiście, zakończyłem ponowną instalację i teraz wszystko działa zgodnie z oczekiwaniami. Dzięki.
fepegar
Jedyne polecenie, które działa dla mnie w kontenerze docker, aby uruchomić kontener docker. Potrzebuje go do tworzenia kodu, do tworzenia własnego środowiska podczas budowania. :-)
Jesteśmy Borg
21

Najpierw spróbuj z sudo , ponieważ bieżący użytkownik może nie mieć uprawnień dostępu do komunikacji z demonem docker, tj. /Var/run/docker.sock

Jeśli nadal nie działa, po instalacji po prostu zatrzymaj demona docker jako,

$ sudo service docker stop

Uruchom następujące polecenie, aby uruchomić demona w tle,

$ sudo nohup docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

Aby ułatwić pracę z Dockerem, należy dodać swoją nazwę użytkownika do grupy użytkowników platformy Docker. Dodanie użytkownika do grupy można wykonać za pomocą poniższego polecenia

$ sudo usermod -aG docker $USER

Ten krok jest również wymieniony w oficjalnej dokumentacji kroków poinstalacyjnych dockera dla systemu Linux ( https://docs.docker.com/engine/installation/linux/linux-postinstall/ )

Plik Ubuntu 16.04 mogą wykonać następujące kroki,

Wewnątrz pliku /lib/systemd/system/docker.service change: ExecStart = / usr / bin / dockerd fd: // with ExecStart = / usr / bin / dockerd -H tcp: //0.0.0.0: 2375

Plik wewnętrzny /etc/init.d/docker zmiana:

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

a następnie uruchom ponownie komputer. I zacznij bawić się dockerem.

mohan08p
źródło
1
bieganie sudo nohup docker daemon -H http://tcp://0.0.0.0:2375 () -H http://unix:///var/run/docker.sockdaje bash: syntax error near unexpected token (``
Umair Ayub
1
Używam redhat linux
Umair Ayub
och ... przepraszam. Dodatkowe znaki (), zaktualizowane. Która wersja RHEL? Po prostu sprawdź, jaką wartość uzyskasz dzięki $ DOCKER_HOST?
mohan08p
$ sudo systemctl umożliwia dockerowi uruchamianie usługi docker podczas rozruchu.
mohan08p
Próbuję teraz zainstalować Dockera na CentOS Linux release 7.3.1611 (Core)... Ale teraz błąd jest Your Linux kernel version 2.6.32-042stab116.2 is not supported for running docker. Please upgrade your kernel to 3.10.0 or newer.... czy mogę zaktualizować jądro używając yum update kernel... ???? pytanie brzmi, czy usunie wszystko z mojego serwera? to serwery na żywo z uruchomioną witryną internetową, nie chcę tego zepsuć.
Umair Ayub
9

Zwykle dzieje się tak, jeśli prawdopodobnie nie zatrzymałeś dockera.

Rozwiązać

service docker stop
cd /var/run/docker/libcontainerd
rm -rf containerd/*
rm -f docker-containerd.pid
service docker start

następnie „docker run…”, aby pobrać obraz i jak zwykle uruchomić kontener

Niewinny Anigbo
źródło
8

Po prostu trafiłem na to po wykonaniu nowej instalacji DOCKER z ​​głównej dokumentacji. U mnie problem polegał na tym, że zaraz po instalacji usługa nie działa.

Te polecenia pomogą Ci upewnić się, że docker jest uruchomiony i działa, aby polecenie uruchomienia mogło go znaleźć:

$ sudo service --status-all 
$ sudo service docker start
$ sudo service docker start
Paul McDaniel
źródło
7

Używam roota i próbowałem poniżej, zadziałało:

service docker start

export DOCKER_HOST="tcp://0.0.0.0:2375"
user11500628
źródło
3
Jeśli to działa na twoim hoście, oznacza to, że nie masz hasła roota. Każdy, kto ma dostęp do tego portu, może wykonywać polecenia jako root na twoim hoście.
BMitch
6

Miałem ten problem po zamknięciu dockera będzie ciągnąć kontener docker pull mongo. Na początku otrzymywałem dziwne błędy, więc wyczyściłem dockera sudo apt-get purge docker.ioi ponownie zainstalowałem sudo apt-get install docker.io... wszystko to nic nie dało. Nie mogłem nawet uruchomić kontenera Hello-World. Przynajmniej dla mnie poprawna poprawka to:

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

Po tym mogłem ciągnąć mongo i biegać po świecie.

Twoje zdrowie!

Jonathan Saylor
źródło
Musiałem to zrobić z Sudo na Ubuntu 18.04
Basanth
4

oto rozwiązanie, które działa dla mnie w systemie Linux

systemctl start docker.

Mohammad Heydari
źródło
2

użyj tego w eksporcie ubuntu DOCKER_HOST = tcp: // localhost: 2375

Yash Keshri
źródło
Jeśli to działa w Twoim systemie, oznacza to, że nie masz hasła roota. Każdy, kto ma dostęp do tego portu, może wykonywać polecenia jako root na hoście.
BMitch
2

export DOCKER_HOST = tcp: // localhost: 2375 jest idealny dla każdego, kto nie ma dostępu do sudo, a użytkownik nie ma dostępu do unix: ///var/run/docker.sock

Mantas Marma
źródło
Jest to również przydatne dla każdego, kto normalnie nie ma uprawnień administratora, ale chciałby łatwo uzyskać uprawnienia roota na Twoim hoście. Każdy, kto ma dostęp do tego portu, może wykonywać polecenia jako root.
BMitch
@BMitch chcesz rozwinąć?
Fran Marzoa
@FranMarzoa od innego użytkownika, któremu nie ufasz, lub nawet z innego hosta, możesz uruchomić dowolne docker runpolecenie z użytkownikiem root wewnątrz kontenera, uprzywilejowanym, z przestrzeniami nazw hostów na pid i sieci, i zamontowaniem głównego systemu plików w porządku.
BMitch
2

Próbowałem uruchomić docker (właśnie zainstalowany) w wystąpieniu AWS, gdy pojawił się komunikat. Po prostu piszę sudo service docker starti dobrze mi działa.

Zobacz także AWS z Dockerem

dmarquina
źródło
2

wprowadź opis obrazu tutaj

Po prostu zapomniałem uruchomić Docker Desktop na moim Macu, po uruchomieniu Docker Desktop będziesz gotowy.

Ping Woo
źródło
2

Ten wyjątek pojawia się, gdy usługa dockera nie działa lub zalogowany użytkownik nie ma uprawnień dostępu do dockera i generalnie występuje w RedHat

Użycie poniższego polecenia powinno rozwiązać problem

sudo service docker start

wprowadź opis obrazu tutaj

Sumit Arora
źródło
2

U mnie to zadziałało:

sudo systemctl unmask docker
sudo systemctl start docker
Md. Rakibul Islam
źródło
pracował dla mnie. dzięki.
ncesar
1

Miałem ten sam problem z uruchomionym węzłem Gitlab CI: obraz lts:

  • Właśnie zrestartowałem demona dockera i zrestartowałem kontener, zadziałało dla mnie.
akshaymittal143
źródło
1

To zadziałało dla mnie, może po prostu zadziałać, jeśli używasz Ubuntu 16 lub 18 (14 może również działać). Łatwo spróbować:

Przejdź do oprogramowania Ubuntu, wpisz Docker. Odinstaluj docker (108 MB), jeśli jest tam preinstalowany. Zainstaluj docker Teraz uruchom polecenia i zobacz, czy wystąpi ten sam błąd

Błąd:

wprowadź opis obrazu tutaj

Po wykonaniu powyższych czynności. wprowadź opis obrazu tutaj

Jak widać, udało się :)

Ashish Gupta
źródło
1

Napotkałem ten sam problem w Linuksie, kiedy zainstalowałem docker przy użyciu yum (yum install docker).

Rozwiązanie: pobierz plik binarny Dockera z oficjalnej strony: zainstaluj , rozpakuj i postępuj zgodnie z instrukcjami instalacji.

Denys
źródło
1

Żadna z aktualnych odpowiedzi nie działała w przypadku mojej wersji tego błędu. Używam wersji Ubuntu 18. na komputery stacjonarne. Następujące dwa polecenia rozwiązały problem.

sudo snap connect docker:home :home

sudo snap start docker

Eric
źródło
0

Dla mnie rozwiązaniem było po prostu upewnienie się, że zainstalowałem poprawny pakiet Dockera. Na przykład w przypadku Ubuntu zdeprecjonowane pakiety to:

  • doker
  • docker-engine
  • docker.io
  • pojemnikd
  • runc

Aby zainstalować, sprawdź https://docs.docker.com . Instrukcje dla Ubuntu , CentOS , Debiana i Fedory są dostępne w czasie pisania.

RikH
źródło
Pominięto kilka kroków: skorzystaj z tego linku, aby podpisać repozytorium. medium.com/@sebagomez/…
Robert
@Robert, powyżej odwołuję się również do oficjalnego docs.docker, aby uzyskać klucz PGP. Jest to bezpieczniejsze niż kopiowanie go przez użytkowników z tej witryny lub nośnika.
RikH
Wypróbowałem kroki ubuntu i te nie działają. Potrzebujesz procesu podpisywania i podanego przeze mnie linku.
Robert
@Robert, dziękuję, że usunąłem moje niekompletne instrukcje i zamiast tego zapoznaj się z oficjalną dokumentacją.
RikH
0

Upewnij się, że informacje w tej ścieżce /etc/docker/daemon.json

{
  "registry-mirror": [
    "https://registry.docker-cn.com"
  ],
  "insecure-registries": [
    "192.168.199.100:5000"
  ]
}

usunąć

"insecure-registries": [
    "192.168.199.100:5000"
]

i działa dobrze wprowadź opis zdjęcia tutaj

chao chen
źródło
0

Może to być związane z brakiem miejsca na dysku twardym. Upewnij się, że masz wolne miejsce na urządzeniu, Docker nie może się uruchomić, jeśli nie ma wolnego miejsca.

K - Toksyczność SO rośnie.
źródło
0

Posługiwać się docker start <your_container_name>

Następnie połącz się z bazą danych za pomocą mssql -u <yourUsername> -p <yourPassword>

Jeśli pojawi się błąd w pierwszym kroku, oznacza to, że docker jest uruchomiony i przejdź do drugiego kroku.

Uwaga: używam Maca jako podstawowego systemu operacyjnego i może to być ta sama odpowiedź dla systemów operacyjnych opartych na Uniksie. Jeśli nie! Z góry przepraszam.

Pavankumar AN
źródło
0

Otrzymałem również poniższy komunikat o błędzie, po zainstalowaniu dockera i uruchomieniu: docker run hello-world

Nie można połączyć się z demonem Dockera pod adresem unix: /var/run/docker.sock. Czy demon Dockera jest uruchomiony?

Oto rozwiązanie, które zadziałało dla mnie. Środowisko - Windows 10 (nie zapomnij włączyć w systemie Windows: Ustawienia> Aktualizacja i zabezpieczenia> Tryb programisty) - Ubuntu 18.04 LTS - Docker Desktop w wersji 2.3.0.2 (45183) - Włącz w Docker Desktop: Expose daemon on tcp: // localhost: 2375 bez TLS - musi być również uruchomiony Docker Desktop (podłączony do Docker Hub ... po prostu zaloguj się)

Po zainstalowaniu Ubuntu zaktualizuj repozytorium

sudo apt-get update

Aby korzystać z repozytorium przez HTTPS

sudo apt-get install \ apt-transport-https \ ca-Certificates \ curl \ gnupg-agent \ software-properties-common

Dodaj oficjalny klucz Docker GPG:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Upewnij się, że masz teraz klucz z odciskiem palca

sudo apt-key odcisk palca 0EBFCD88

Zaktualizuj repozytorium

sudo apt-get update

Zaktualizuj repozytorium Dockera

sudo add-apt-repository \ "deb [arch = amd64] https://download.docker.com/linux/ubuntu \ $ (lsb_release -cs) \ stable"

Zaktualizuj repozytorium ponownie

sudo apt-get update

Polecenie instalacji dockera w wersji: 5: 18.09.9 ~ 3-0 ~ ubuntu-bionic

sudo apt-get install docker-ce = 5: 18.09.9 ~ 3-0 ~ ubuntu-bionic docker-ce-cli = 5: 18.09.9 ~ 3-0 ~ ubuntu-bionic containerd.io

Polecenie do ustawienia DOCKER_HOST

eksportuj DOCKER_HOST = "tcp: //0.0.0.0: 2375"

Uwaga: umieść powyższe polecenie w swoim profilu, aby rozpocząć od ubunto ex: echo "export DOCKER_HOST = 'tcp: //0.0.0.0: 2375'" >> ~ / .bashrc

Dodaj użytkownika do grupy Docker

sudo usermod -aG docker $ USER

Uruchom ponownie ubuntu

(Zamknij i ponownie otwórz okno Ubuntu)

Testowanie instalacji (NIE używaj więcej sudo przed poleceniami dockera (spowoduje to błąd), użytkownik "root" został już uwzględniony w grupie docker)

docker run hello-world

Powinien zostać wyświetlony poniższy komunikat

Witam z Dockera! Ten komunikat wskazuje, że Twoja instalacja działa poprawnie.

Uwaga: jeśli to się nie powiedzie, uruchom ponownie polecenie: eksportuj DOCKER_HOST = "tcp: //0.0.0.0: 2375"

eksportuj DOCKER_HOST = "tcp: //0.0.0.0: 2375"

Źródła: https://docs.docker.com/engine/install/ubuntu/ Źródła Sesja: INSTALL DOCKER ENGINE

W przypadku innych wersji dockera, które można zainstalować z Ubuntu, zobacz repozytorium za pomocą poniższego polecenia:

apt-cache madison docker-ce

Następnie zainstaluj żądaną wersję dokera:

sudo apt-get install docker-ce = docker-ce-cli = containerd.io

ukaliko
źródło
0

Dla wszystkich, którzy mają problemy z Dockerem w momencie instalacji.

Błąd wskazujący na awarię w usłudze docker, wykonaj poniższe polecenia.

$ sudo apt update

$ sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

$ sudo apt update

$ apt-cache policy docker-ce

$ sudo apt install docker-ce
Hisham Javed
źródło
-1

Ten problem można rozwiązać na stałe, uruchamiając 1. systemctl enable docker 2. service docker start

JV Reddy
źródło
Wygląda na to, że przy service start dockerkażdym ponownym uruchomieniu komputera muszę uruchamiać usługę dockera.
Pran Kumar Sarkar
@PranKumarSarkar Nie, jeśli uruchomisz „sudo systemctl enable docker”
GabrielBB