erro do docker: /var/run/docker.sock: nenhum arquivo ou diretório

86

Eu sou novo no docker. Eu tenho um script de shell que carrega dados no impala e quero um arquivo docker que executa, cria uma imagem e executa o contêiner. Estou no mac, instalei o boot2docker e tenho o DOCKER_HOSTenv configurado.

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]

Estou tentando instalar uma imagem pré-construída usando:

sudo docker pull busybox

Eu recebo este erro:

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

Há algo errado com a configuração da minha docker?

Quando eu faço um docker pull busybox, ele puxa a imagem e o download é concluído.

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

Estou esquecendo de algo?

user1189851
fonte
Eu estava tendo o mesmo problema. Reiniciei meu laptop. então começou a funcionar para mim. (consulte docs.docker.com/installation/ubuntulinux ) Eles também mencionaram para reiniciar o computador.
NehaG
funcionou para mim quando me conectei à internet, mas não tenho ideia de por que isso aconteceu :(
Sai Ram

Respostas:

87

Você não precisa executar nenhum comando do docker como sudoquando usa boot2dockercomo cada comando passado para oboot2docker VM são executados como root por padrão.

Você está vendo o erro ao executar sudoporque sudonão tem o DOCKER_HOSTenv definido, apenas o seu usuário tem.

Você pode confirmar isso fazendo:

$ env

Então uma

$ sudo env

E procurando DOCKER_HOSTem cada saída.

Quanto a ter um arquivo docker que executa seu script, algo assim pode funcionar para você:

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

Então você pode executar:

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

Isso criará sua imagem do docker, que você pode ver fazendo:

docker images

Então, para executar seu contêiner, você pode fazer:

docker run your-image-name:your-tag

Este comando de execução iniciará um contêiner a partir da imagem que você criou com seu Dockerfilee seu comando de compilação e, em seguida, terminará quando sua script.shexecução terminar.

Chris McKinnel
fonte
1
Desculpe pela minha ignorância, mas acho que não consegui construir. "imagens docker": dá 19/08/2014 11:11:45 Obter http: ///var/run/docker.sock/v1.13/images/json: dial unix /var/run/docker.sock: não tal arquivo ou diretório. A janela de encaixe deve ser colocada no diretório inicial e pode ser nomeada com qualquer nome? É o mesmo que "nome da imagem"?
user1189851
Você pode colar o comando que está usando para construir a imagem do docker? Parece que você ainda está usando sudo em sua máquina OSX, quando não deveria.
Chris McKinnel
$ docker build -t / Users / ig / Documents / tests / hellodocker. 19/08/2014 11:18:09 Nome de namespace inválido (), apenas [a-z0-9_] são permitidos, tamanho entre 4 e 30; e o hellodocker tem apenas o conteúdo do dockerfile que você forneceu. Muito obrigado.
user1189851
Sim, você está tentando marcar sua imagem do docker com um caminho de arquivo - tente outra coisa depois de -tsemelhante your-image-name:a-tag.
Chris McKinnel
Você poderia me dar a linha de comando, pls. Estou bagunçando alguma coisa. meu arquivo docker é hellodocker e o caminho é fornecido acima.
user1189851
45

Você pode configurar rapidamente o seu ambiente usando shellinit

No prompt de comando, execute:

$(boot2docker shellinit)  

Isso preencherá e exportará as variáveis ​​de ambiente e inicializará outros recursos.

user848337
fonte
26

No meu MAC, quando eu inicio boot2docker-vm no terminal usando


boot2docker start

Eu vejo o seguinte


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

Depois de definir essas variáveis ​​de ambiente, consegui executar o build sem problemas.

Atualização [2016-04-28] Se você estiver usando as versões recentes do docker, pode fazer

eval $(docker-machine env) irá definir o ambiente

( docker-machine envimprimirá as declarações de exportação)

Jerome Anthony
fonte
2
Você também pode adicioná-los ao seu perfil de terminal para economizar tempo. A VM irá informá-lo de que já estão configurados.
Joe Susnick
25

docker pullirá falhar se docker servicenão estiver em execução. Certifique-se de que está funcionando por

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

Se não estiver funcionando, você pode iniciá-lo

sudo service docker start

Para Ubuntu 15 e acima, use

sudo systemctl start docker

Harikrishnan
fonte
16

Eu também recebi esse erro. Porém, eu não usei o boot2docker, mas apenas instalei o docker "simples" no Ubuntu (consulte https://docs.docker.com/installation/ubuntulinux/ ).

Recebi o erro ("disque unix /var/run/docker.sock: nenhum arquivo ou diretório. Você está tentando se conectar a um daemon habilitado para TLS sem TLS?") Porque o daemon docker não estava em execução .

No Ubuntu, você precisa iniciar o serviço :

sudo service docker start

Veja também http://blog.arungupta.me/resolve-dial-unix-docker-sock-error-techtip64

Jörg
fonte
9

Para boot2docker no Windows, depois de ver:

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?

Tudo que fiz foi:

boot2docker start
boot2docker shellinit

Isso gerou:

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

Finalmente:

boot2docker ssh

E o docker funciona novamente

VonC
fonte
6

No Linux, primeiro de tudo execute sudo service docker startno terminal.

Mohsen Kashi
fonte
5

Se você estiver usando o CentOS 7 e tiver instalado o Docker via yum, não se esqueça de executar:

$ sudo systemctl start docker
$ sudo systemctl enable docker

Isso irá iniciar o servidor, bem como reiniciá-lo automaticamente na inicialização.

Lee Benson
fonte
4

Para configurar seu ambiente e mantê-lo para as sessões futuras, você pode fazer:

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

Então: source ~/.bashrc

E seu ambiente será configurado em cada sessão

Tenente
fonte
0

O primeiro /var/run/docker.sock se refere ao mesmo caminho em sua máquina virtual boot2docker. Escreva corretamente para windows /var/run/docker.sock

M. Dicon
fonte
Você pode adicionar mais alguma explicação aqui? Além disso, acho que o usuário está em um mac.
2ps de
0

Você, talvez não seja o OP, mas alguém pode já ter um diretório chamado /var/run/docker.sock/devido ao número de vezes que você hack e slash para acertar as coisas com o docker (especialmente noobs). Exclua esse diretório e tente novamente.

Isso me ajudou no meu caminho para fazê-lo funcionar no Centos 7.

pjammer
fonte