помилка 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.