помилка docker: /var/run/docker.sock: такого файлу або каталогу немає


86

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

Мені чогось не вистачає?


У мене була така сама проблема. Я перезавантажив свій ноутбук. так він почав працювати для мене. (див. docs.docker.com/installation/ubuntulinux ) Вони також згадали про перезавантаження комп'ютера.
— NehaG

працював у мене, коли я підключився до Інтернету, я навіть не уявляю, чому це сталося :(
— Sai Ram

Відповіді:


87

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

Ви бачите помилку, коли ви запускаєте як, sudoоскільки sudoне маєDOCKER_HOST env, це робить лише ваш користувач.

Ви можете підтвердити це, виконавши:

$ env

Тоді a

$ sudo env

І шукає DOCKER_HOST в кожному виході.

Що стосується наявності файлу докера, який запускає ваш сценарій, щось подібне може вам підійти:

Докерфайл

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
Вибачте за своє незнання, але я не думаю, що мені вдалося побудувати. "docker images": надає 19.08.2014 11:11:45 Отримати http: ///var/run/docker.sock/v1.13/images/json: dial unix /var/run/docker.sock: no такий файл або каталог. Чи слід розміщувати докер у домашньому каталозі та чи можна його назвати з будь-яким ім’ям? Це те саме, що "ім’я-зображення"?
— user1189851

Чи можете ви вставити команду, яку ви використовуєте для створення образу докера? Здається, ви все ще використовуєте sudo на своїй машині OSX, коли не повинні.
— Chris McKinnel

$ docker build -t / Users / ig / Documents / tests / hellodocker. 2014/08/19 11:18:09 Недійсна назва простору імен (), дозволено лише [a-z0-9_], розмір від 4 до 30; і hellodocker містить лише вміст файлу docker, який ви надали. дуже дякую.
— user1189851

Так, ви намагаєтеся позначити зображення вашого докера шляхом до файлу - спробуйте щось інше після того, -tяк your-image-name:a-tag.
— Chris McKinnel

Не могли б ви дати мені командний рядок, pls. Я щось псую. мій файл docker - hellodocker, і шлях вказаний вище.
— user1189851

45

Ви можете швидко налаштувати своє середовище за допомогою shellinit

У вашому командному рядку виконайте:

$(boot2docker shellinit)  

Це заповнить та експортує змінні середовища та ініціалізує інші функції.


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] Якщо ви використовуєте останні версії docker, це можна зробити

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

( docker-machine envнадрукує звіти про експорт)


2
Ви також можете додати їх до свого профілю терміналу, щоб заощадити час. Vm повідомить вас, що вони вже встановлені.
— Джо Суснік

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

І докер знову працює



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

І ваше середовище буде налаштовано на кожному сеансі


0

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


Ви можете додати тут ще якесь пояснення? Крім того, я думаю, що користувач перебуває на mac.
— 2ps

0

Ви, можливо, не OP, але хтось може мати каталог, який називається /var/run/docker.sock/ вже через те, скільки разів ви зламуєте та косите риски, щоб все зробити правильно з docker (особливо noobs). Видаліть цей каталог і повторіть спробу.

Це допомогло мені на шляху до роботи на Centos 7.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.