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?

user1189851
źródło
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.

Chris McKinnel
źródło
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.

user848337
źródło
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)

Jerome Anthony
źródło
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

Harikrishnan
źródło
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

Jörg
źródło
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

VonC
źródło
6

W Linuksie przede wszystkim wykonaj sudo service docker startw terminalu.

Mohsen Kashi
źródło
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.

Lee Benson
źródło
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

Lt.
źródło
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

M. Dicon
źródło
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.

pjammer
źródło