Ошибка докера:/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.