Ошибка докера:/var/run/docker.sock: нет такого файла или каталога

Я новичок в докере. У меня есть оболочка script, которая загружает данные в impala, и я хочу, чтобы файл docker, который запускает, создает изображение и запускает контейнер. Я нахожусь на mac, установлен boot2docker и настроен DOCKER_HOST 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]

Я пытаюсь просто установить предварительно построенное изображение, используя:

sudo docker pull busybox

Я получаю эту ошибку:

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

Что-то не так с моей установкой докеров?

Когда я делаю docker pull busybox, он вытаскивает изображение, и загрузка завершена.

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

Я что-то пропустил?

Ответ 1

Вам не нужно запускать команды docker как sudo, когда вы используете boot2docker, поскольку каждая команда, переданная в boot2docker VM, запускается как root по умолчанию.

Вы видите ошибку, когда вы работаете как sudo, потому что sudo не имеет набора DOCKER_HOST env, только ваш пользователь делает.

Вы можете подтвердить это, выполнив:

$ env

Тогда a

$ sudo env

Ищем DOCKER_HOST в каждом выходе.

Что касается файла докеров, который запускает ваш script, для вас может быть что-то вроде этого:

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

Затем вы можете запустить:

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

Это создаст ваше изображение докеры, которое вы можете увидеть, выполнив:

docker images

Затем, чтобы запустить контейнер, вы можете сделать следующее:

docker run your-image-name:your-tag

Эта команда запуска запустит контейнер из образа, созданного с помощью вашей команды Dockerfile и вашей сборки, а затем завершится после завершения выполнения script.sh.

Ответ 2

Вы можете быстро настроить свою среду с помощью shellinit

В командной строке выполните:

$(boot2docker shellinit)  

Это будет заполнять и экспортировать переменные среды и инициализировать другие функции.

Ответ 3

На моем MAC, когда я запускаю boot2docker-vm на терминале, используя


boot2docker start

Я вижу следующее


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

После установки этих переменных среды мне удалось запустить сборку без проблем.

Обновить [2016-04-28] Если вы используете последние версии докеров, вы можете сделать

eval $(docker-machine env) установит среду

(docker-machine env распечатает экспортные заявления)

Ответ 4

docker pull завершится с ошибкой, если docker service не запущен. Убедитесь, что он запущен на

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

Если он не запущен, его можно запустить с помощью

sudo service docker start

Для Ubuntu 15 и выше используйте

sudo systemctl start docker

Ответ 5

Я также получил эту ошибку. Хотя я не использовал boot2docker, а просто установил "простой" докер на Ubuntu (см. https://docs.docker.com/installation/ubuntulinux/).

Я получил ошибку ( "dial unix/var/run/docker.sock: нет такого файла или каталога. Вы пытаетесь подключиться к демону с поддержкой TLS без TLS?" ), поскольку демон docker был не работает.

В Ubuntu вам нужно запустить службу:

sudo service docker start

См. также http://blog.arungupta.me/resolve-dial-unix-docker-sock-error-techtip64

Ответ 6

Для boot2docker в Windows, после просмотра:

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?

Все, что я сделал, это:

boot2docker start
boot2docker shellinit

Сгенерировано:

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

Наконец:

boot2docker ssh

И докер снова работает

Ответ 7

В Linux, прежде всего, выполните sudo service docker start в терминале.

Ответ 8

Если вы используете CentOS 7, и вы установили Docker через yum, не забудьте запустить:

$ sudo systemctl start docker
$ sudo systemctl enable docker

Это запустит сервер, а также перезапустит его автоматически при загрузке.

Ответ 9

Чтобы настроить среду и сохранить ее для будущих сеансов, вы можете:

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

Тогда: source ~/.bashrc

И ваша среда будет настроена на каждом сеансе

Ответ 10

Первый/var/run/docker.sock относится к одному и тому же пути в вашей виртуальной машине boot2docker. Корректно писать для windows/var/run/docker.sock

Ответ 11

Вы, возможно, не OP, но у кого-то может быть каталог с именем /var/run/docker.sock/ уже из-за того, сколько раз вы взламываете и скрестите, чтобы все было в порядке с докером (особенно noobs). Удалите этот каталог и повторите попытку.

Это помогло мне по пути заставить его работать на Centos 7.