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

86

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

Я что-то упускаю?

user1189851
источник
У меня была такая же проблема. Я перезагрузил свой ноутбук. так что он начал работать для меня. (см. docs.docker.com/installation/ubuntulinux ) Они также упомянули перезагрузку компьютера.
NehaG
у меня сработало, когда я подключился к Интернету, но я понятия не имею, почему это произошло :(
Сай Рам

Ответы:

87

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

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

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

$ env

Затем

$ sudo env

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

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

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завершите выполнение.

Крис МакКиннел
источник
1
Извините за мое невежество, но я не думаю, что мне удалось построить. "образы докеров": дает 19.08.2014 11:11:45 Получить http: ///var/run/docker.sock/v1.13/images/json: набрать unix /var/run/docker.sock: нет такой файл или каталог. Следует ли поместить докер в домашний каталог и можно ли ему присвоить любое имя? Это то же самое, что и «имя-изображения»?
user1189851
Можете ли вы вставить команду, которую используете для создания образа докера? Похоже, вы все еще используете sudo на своей машине OSX, хотя вам этого не следует.
Крис МакКиннел
$ docker build -t / Users / ig / Documents / tests / hellodocker. 2014/08/19 11:18:09 Недопустимое имя пространства имен (), разрешены только [a-z0-9_], размер от 4 до 30; а hellodocker содержит только содержимое предоставленного вами файла докеров. большое спасибо.
user1189851
Да, вы пытаетесь пометить свой образ докера путем к файлу - попробуйте что-нибудь еще после того, -tкак your-image-name:a-tag.
Крис МакКиннел
Не могли бы вы дать мне командную строку, пожалуйста. Я что-то напортачил. мой файл докеров - hellodocker, и путь указан выше.
user1189851
45

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

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

$(boot2docker shellinit)  

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

user848337
источник
26

На моем 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распечатает отчеты об экспорте)

Джером Энтони
источник
2
Вы также можете добавить их в свой профиль терминала, чтобы сэкономить время. ВМ сообщит вам, что они уже установлены.
Джо Сусник
25

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

Харикришнан
источник
16

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

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

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

sudo service docker start

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

Йорг
источник
9

Для 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

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

VonC
источник
6

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

Мохсен Каши
источник
5

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

$ sudo systemctl start docker
$ sudo systemctl enable docker

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

Ли Бенсон
источник
4

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

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

Затем: source ~/.bashrc

И ваша среда будет настраиваться в каждой сессии

Lt.
источник
0

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

М. Дикон
источник
Не могли бы вы добавить сюда дополнительные пояснения? Кроме того, я думаю, что пользователь Mac.
2ps,
0

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

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

пижамный
источник