Установка веб-приложения в контейнер Docker: наберите unix /var/run/docker.sock: нет такого файла или каталога

Я пытаюсь установить веб-приложение в контейнере Docker.

Я использую OS X Yosemite версии 10.10.1.

Я следил за руководством по докеризации веб-приложения Node.js здесь: https://docs.docker.com/examples/nodejs_web_app/

  1. Я загрузил и установил установщик boot2docker osx по адресу: github.com/boot2docker/osx-installer/releases/tag/v1.4.1.

  2. Я ввел эти команды в консоли в следующем порядке:

    $ boot2docker init $ boot2docker start $ (boot2docker shellinit)

  3. Затем я устанавливаю переменную среды в соответствии с инструкциями терминала с помощью следующих команд:

    $ export DOCKER_TLS_VERIFY=1 $ export DOCKER_HOST=tcp://192.168.59.103:2376 $ export DOCKER_CERT_PATH=/Users/myusername/.boot2docker/certs/boot2docker-vm

В этот момент все, казалось, работало нормально.

  1. Затем, следуя руководству по докеризации приложения Node.js, я перешел к следующему пункту: https://docs.docker.com/examples/nodejs_web_app/#building-your-image, где вы вводите команду:

    $ sudo docker build -t <your username>/centos-node-hello .

  2. Затем запрашивает пароль, а затем после его ввода я продолжаю получать это сообщение об ошибке:

    Sending build context to Docker daemon FATA[0000] Post http:///var/run/docker.sock/v1.16/build?rm=1&t=myusername%2Fcentos-node- hello: dial unix /var/run/docker.sock: no such file or directory

Вот мои переменные env:

`TERM_PROGRAM=Apple_Terminal
TERM=xterm-256color
SHELL=/bin/bash
TMPDIR=/var/folders/vb/vmd78vk57mqd6fv7sqb544pc0000gn/T/
DOCKER_HOST=tcp://192.168.59.103:2376
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.BBIW525XNA/Render
TERM_PROGRAM_VERSION=343
OLDPWD=/Users/myusername/Desktop
TERM_SESSION_ID=FAD1F3F1-35DF-4183-A47A-08749EAFEACB
USER=myusername
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.A6ZjHwx8eq/Listeners
__CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0
DOCKER_TLS_VERIFY=1
PATH=/Users/myusername/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
PWD=/Users/myusername/Desktop/docker
LANG=en_CA.UTF-8
vXPC_FLAGS=0x0
XPC_SERVICE_NAME=0
DOCKER_CERT_PATH=/Users/myusername/.boot2docker/certs/boot2docker-vm
HOME=/Users/myusername
SHLVL=1
LOGNAME=myusername
DISPLAY=/private/tmp/com.apple.launchd.IesbS7VdCy/org.macosforge.xquartz:0
SECURITYSESSIONID=186a5
_=/usr/bin/env`

Моя версия докера:

`Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8`

Любая помощь могла бы быть полезна. Спасибо


person gatordh7    schedule 19.12.2014    source источник


Ответы (1)


Краткий ответ для вашего конкретного случая: не используйте sudo.

И вот почему:

Когда вы используете boot2docker, демон docker работает на виртуальной машине, по сути, на другой машине. Для связи с демоном docker на другом компьютере необходимо использовать соединение TLS (через HTTPS с REST API демона). Вот почему вам пришлось настроить DOCKER_HOST и DOCKER_CERT_PATH. Поскольку демон работает на другом компьютере, вам не нужно быть пользователем root для связи с ним, поскольку для исходящих HTTP-соединений не требуется root, в отличие от попыток общения с сокетом unix:///var/run/docker.sock.

Но когда вы запускаете sudo docker, вы вдруг становитесь другим пользователем, вы root. Переменные среды, которые вы задали как свою обычную учетную запись, не установлены. Таким образом, интерфейс командной строки docker использует метод связи по умолчанию: сокет unix. Сокета там нет, потому что демон работает на другой машине (boot2docker vm). Отсюда и сообщение об ошибке.

person Andy    schedule 19.12.2014