błąd dockera: /var/run/docker.sock: brak takiego pliku lub katalogu


86

Jestem nowy w dockerze. Mam skrypt powłoki, który ładuje dane do impali i chcę, aby plik Dockera, który uruchamiał, budował obraz i uruchamiał kontener. Jestem na Macu, zainstalowałem boot2docker i DOCKER_HOSTskonfigurowałem env.

bash-3.2$ docker info
Containers: 0
Images: 0
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Dirs: 0
Execution Driver: native-0.2
Kernel Version: 3.15.3-tinycore64
Debug mode (server): true
Debug mode (client): false
Fds: 10
Goroutines: 10
EventsListeners: 0
Init Path: /usr/local/bin/docker
Sockets: [unix:///var/run/docker.sock tcp://0.0.0.0:2375]

Próbuję właśnie zainstalować gotowy obraz za pomocą:

sudo docker pull busybox

Otrzymuję ten błąd:

sudo docker pull busybox 2014/08/18 17:56:19 Post http:///var/run/docker.sock/images/create?fromImage=busybox&tag=: dial unix /var/run/docker.sock: no such file or directory

Czy coś jest nie tak z moją konfiguracją Dockera?

Kiedy robię docker pull busybox, pobiera obraz i pobieranie jest zakończone.

bash-3.2$ docker pull busybox
Pulling repository busybox
a9eb17255234: Download complete 
fd5373b3d938: Download complete 
d200959a3e91: Download complete 
37fca75d01ff: Download complete 
511136ea3c5a: Download complete 
42eed7f1bf2a: Download complete 
c120b7cab0b0: Download complete 
f06b02872d52: Download complete 
120e218dd395: Download complete 
1f5049b3536e: Download complete 
bash-3.2$ docker run busybox /bin/echo Hello Doctor
Hello Doctor

Czy coś mi brakuje?


Miałem ten sam problem. Ponownie uruchomiłem laptopa. więc zaczęło działać dla mnie. (zobacz docs.docker.com/installation/ubuntulinux ) Wspomnieli również o ponownym uruchomieniu komputera.
— NehaG

pracował dla mnie, gdy połączyłem się z internetem, nie mam pojęcia, dlaczego tak się stało :(
— Sai Ram

Odpowiedzi:


87

Nie musisz uruchamiać żadnych poleceń dockera, jak w sudoprzypadku używania, boot2dockerponieważ każde polecenie przekazane do boot2dockermaszyny wirtualnej działa domyślnie jako root.

Widzisz błąd, gdy pracujesz, sudoponieważ sudonie ma DOCKER_HOSTustawionego środowiska env, tylko Twój użytkownik to robi.

Możesz to potwierdzić, wykonując:

$ env

Następnie

$ sudo env

I szuka DOCKER_HOSTw każdym wyjściu.

Jeśli chodzi o posiadanie pliku dockera, który uruchamia twój skrypt, coś takiego może działać dla Ciebie:

Dockerfile

FROM busybox

# Copy your script into the docker image
ADD /path/to/your/script.sh /usr/local/bin/script.sh

# Run your script
CMD /usr/local/bin/script.sh

Następnie możesz biegać:

docker build -t your-image-name:your-tag .

Spowoduje to zbudowanie obrazu dockera, który możesz zobaczyć, wykonując:

docker images

Następnie, aby uruchomić kontener, możesz wykonać:

docker run your-image-name:your-tag

To polecenie uruchomienia uruchomi kontener z obrazu utworzonego za pomocą Dockerfilepolecenia i polecenia kompilacji, a następnie zakończy się po script.shzakończeniu wykonywania.


1
Przepraszam za moją ignorancję, ale nie sądzę, że udało mi się zbudować. „docker images”: gives 2014/08/19 11:11:45 Get http: ///var/run/docker.sock/v1.13/images/json: dial unix /var/run/docker.sock: no taki plik lub katalog. Czy docker powinien być umieszczony w katalogu domowym i czy można go nazwać dowolną nazwą? Czy to to samo, co „nazwa-obrazu”?
— user1189851

Czy możesz wkleić polecenie, którego używasz do tworzenia obrazu Dockera? Wygląda na to, że nadal używasz sudo na komputerze z systemem OSX, a nie powinieneś.
— Chris McKinnel,

$ docker build -t / Users / ig / Documents / tests / hellodocker. 2014/08/19 11:18:09 Nieprawidłowa nazwa przestrzeni nazw (), dozwolone są tylko [a-z0-9_], rozmiar od 4 do 30; a hellodocker ma tylko zawartość pliku dockerfile, który podałeś. wielkie dzięki.
— user1189851

Tak, próbujesz oznaczyć obraz dockera ścieżką do pliku - spróbuj czegoś innego po -tpodobnym your-image-name:a-tag.
— Chris McKinnel,

Czy mógłbyś podać mi wiersz poleceń, proszę. Coś schrzaniłem. mój plik docker to hellodocker, a ścieżka jest podana powyżej.
— user1189851

45

Możesz szybko skonfigurować swoje środowisko za pomocą shellinit

W wierszu poleceń wykonaj:

$(boot2docker shellinit)  

Spowoduje to wypełnienie i wyeksportowanie zmiennych środowiskowych oraz zainicjowanie innych funkcji.


26

Na moim MAC, kiedy uruchamiam boot2docker-vm na terminalu przy użyciu


boot2docker start

Widzę co następuje


To connect the Docker client to the Docker daemon, please set:
    export DOCKER_CERT_PATH=
    export DOCKER_TLS_VERIFY=1
    export DOCKER_HOST=tcp://:2376

Po ustawieniu tych zmiennych środowiskowych mogłem bez problemu uruchomić kompilację.

Aktualizacja [2016-04-28] Jeśli korzystasz z najnowszych wersji dockera, możesz to zrobić

eval $(docker-machine env) ustawi środowisko

( docker-machine envwydrukuje wyciągi eksportowe)


2
Możesz również dodać je do swojego profilu terminala, aby zaoszczędzić czas. Maszyna wirtualna poinformuje Cię, że są już ustawione.
— Joe Susnick

25

docker pullzakończy się niepowodzeniem, jeśli docker servicenie jest uruchomiony. Upewnij się, że jest uruchomiony

:~$ ps aux | grep docker
root     18745  1.7  0.9 284104 13976 ?   Ssl  21:19   0:01 /usr/bin/docker -d

Jeśli nie działa, możesz go uruchomić przez

sudo service docker start

Do użytku w systemie Ubuntu 15 i nowszych

sudo systemctl start docker


16

Mam też ten błąd. Chociaż nie używałem boot2dockera, tylko zainstalowałem „zwykły” docker na Ubuntu (patrz https://docs.docker.com/installation/ubuntulinux/ ).

Wystąpił błąd („dial unix /var/run/docker.sock: brak takiego pliku lub katalogu. Czy próbujesz połączyć się z demonem obsługującym TLS bez TLS?”), Ponieważ demon docker jeszcze nie działał .

Na Ubuntu musisz uruchomić usługę :

sudo service docker start

Zobacz także http://blog.arungupta.me/resolve-dial-unix-docker-sock-error-techtip64


9

W przypadku boot2dockera w systemie Windows, po obejrzeniu:

FATA[0000] Get http:///var/run/docker.sock/v1.18/version: 
dial unix /var/run/docker.sock: no such file or directory.  
Are you trying to connect to a TLS-enabled daemon without TLS?

Wszystko co zrobiłem to:

boot2docker start
boot2docker shellinit

To wygenerowało:

export DOCKER_CERT_PATH=C:\Users\vonc\.boot2docker\certs\boot2docker-vm
export DOCKER_TLS_VERIFY=1
export DOCKER_HOST=tcp://192.168.59.103:2376

Wreszcie:

boot2docker ssh

Docker znowu działa



5

Jeśli używasz CentOS 7 i zainstalowałeś Dockera przez yum, nie zapomnij uruchomić:

$ sudo systemctl start docker
$ sudo systemctl enable docker

Spowoduje to uruchomienie serwera, a także automatyczne ponowne uruchomienie podczas rozruchu.


4

Aby skonfigurować swoje środowisko i zachować je na przyszłe sesje, możesz:

echo 'export DOCKER_HOST="tcp://$(boot2docker ip 2>/dev/null):2375";' >> ~/.bashrc

Następnie: source ~/.bashrc

Twoje środowisko będzie konfigurowane w każdej sesji


0

Pierwszy /var/run/docker.sock odnosi się do tej samej ścieżki w maszynie wirtualnej boot2docker. Pisz poprawnie dla windows /var/run/docker.sock


Czy możesz tu dodać więcej wyjaśnień? Myślę też, że użytkownik korzysta z komputera Mac.
— 2ps

0

Ty, być może nie jesteś OP, ale ktoś może mieć katalog /var/run/docker.sock/już wywołany ze względu na to, ile razy hakujesz i slashujesz, aby wszystko naprawić z dockerem (zwłaszcza noobs). Usuń ten katalog i spróbuj ponownie.

Pomogło mi to w rozpoczęciu pracy na Centos 7.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.