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


Я новичок в докере. У меня есть скрипт оболочки, который загружает данные в impala, и мне нужен файл docker, который запускает создание образа и запуск контейнера. Я нахожусь на mac, установил boot2docker и установил env DOCKER_HOST.

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?

Когда я делаю 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

Есть Ли Я чего-то не хватает?

11 85

11 ответов:

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

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

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

$ env

Тогда a

$ sudo env

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

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

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, который вы можете увидеть, выполнив a:

docker images

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

docker run your-image-name:your-tag

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

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

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

$(boot2docker shellinit)  

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

На моем 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] Если вы используете последние версии docker, вы можете сделать

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

(docker-machine env распечатает инструкции экспорта)

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

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

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

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

sudo service docker start

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

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

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

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

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

$ sudo systemctl start docker
$ sudo systemctl enable docker

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

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

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

Тогда: source ~/.bashrc

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

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

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

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