В Windows 10 Home запуск ddev не запускается - Невозможно создать контейнер для служебной базы данных: неверная конфигурация монтирования для привязки типа

Сегодня попробовал настроить ddev на машине друга:

ОС Windows 10 Home Docker Toolbox - новая установка Docker Toolbox Quickstart -> указание, что нам нужно включить виртуализацию

BIOS -> Виртуализация -> запускается isEnabled Docker Toolbox Quickstart.

druds ddev для windows 10 свежая установленная конфигурация ddev работает.

snowm @ ThomasWin10HP MINGW64 / c / Data3 / test $ ddev start Запуск теста ... Создание ddev-test-db ... ошибка

ОШИБКА: для ddev-test-db Невозможно создать контейнер для службы db: недопустимая конфигурация монтирования для типа «bind»: исходный путь монтирования привязки не существует: /c/Data3/test/.ddev

ОШИБКА: для db Невозможно создать контейнер для службы db: неверная конфигурация монтирования для типа "bind": bind исходный путь монтирования не существует: /c/Data3/test/.ddev Обнаружены ошибки при запуске проекта. Ошибка создания ddev-test-db ...

ОШИБКА: для ddev-test-db Невозможно создать контейнер для службы db: неверная конфигурация монтирования для типа «bind»: исходный путь монтирования привязки не существует: /c/Data3/test/.ddev

ОШИБКА: для db Невозможно создать контейнер для службы db: неверная конфигурация монтирования для типа "bind": bind исходный путь монтирования не существует: /c/Data3/test/.ddev Обнаружены ошибки при запуске проекта. '


но для уверенности, что путь существует. :-(


Мы читаем это (совместное использование дисков с докером), но похоже, что у проекта панели инструментов докера нет этого графического интерфейса: Недопустимая конфигурация монтирования для типа bind: исходный путь привязки не существует при попытке запустить контейнер в Docker для Windows

config.yaml выглядит так:

APIVersion: v1.2.0
Name: test
type: typo3
docroot: www
php_version: "7.2"
webserver_type: nginx-fpm
router_http_port: "80"
router_https_port: "443"
xdebug_enabled: false
additional_hostnames: []
additional_fqdns: []
provider: default

docker-compose.yaml выглядит так

version: '3.6'
#ddev-generated
services:
  db:
    container_name: ddev-${DDEV_SITENAME}-db
    image: $DDEV_DBIMAGE
    stop_grace_period: 60s
    volumes:
      - type: "volume"
        source: mariadb-database
        target: "/var/lib/mysql"
        volume:
          nocopy: true
      - type: "bind"
        source: "${DDEV_IMPORTDIR}"
        target: "/db"
      - type: "bind"
        source: "."
        target: "/mnt/ddev_config"
    restart: "no"
    user: "$DDEV_UID:$DDEV_GID"
    ports:
      - "3306"
    labels:
      com.ddev.site-name: ${DDEV_SITENAME}
      com.ddev.platform: ddev
      com.ddev.app-type: typo3
      com.ddev.approot: $DDEV_APPROOT
      com.ddev.app-url: $DDEV_URL
    environment:
      - COLUMNS=$COLUMNS
      - LINES=$LINES
    command: "$DDEV_MARIADB_LOCAL_COMMAND"
  web:
    container_name: ddev-${DDEV_SITENAME}-web
    image: $DDEV_WEBIMAGE
    volumes:
      - "../:/var/www/html:cached"
      - ".:/mnt/ddev_config:ro"
    restart: "no"
    user: "$DDEV_UID:$DDEV_GID"
    depends_on:
      - db
    links:
      - db:db
    # ports is list of exposed *container* ports
    ports:
      - "80"
      - "8025"
    working_dir: /var/www/html/${DDEV_DOCROOT}
    environment:
      - DDEV_URL=$DDEV_URL
      - DOCROOT=$DDEV_DOCROOT
      - DDEV_PHP_VERSION=$DDEV_PHP_VERSION
      - DDEV_WEBSERVER_TYPE=$DDEV_WEBSERVER_TYPE
      - DDEV_PROJECT_TYPE=$DDEV_PROJECT_TYPE
      - DDEV_ROUTER_HTTP_PORT=$DDEV_ROUTER_HTTP_PORT
      - DDEV_ROUTER_HTTPS_PORT=$DDEV_ROUTER_HTTPS_PORT
      - DDEV_XDEBUG_ENABLED=$DDEV_XDEBUG_ENABLED
      - DEPLOY_NAME=local
      - VIRTUAL_HOST=$DDEV_HOSTNAME
      - COLUMNS=$COLUMNS
      - LINES=$LINES
      # HTTP_EXPOSE allows for ports accepting HTTP traffic to be accessible from <site>.ddev.local:<port>
      # To expose a container port to a different host port, define the port as hostPort:containerPort
      - HTTP_EXPOSE=${DDEV_ROUTER_HTTP_PORT}:80,8025
      # You can optionally expose an HTTPS port option for any ports defined in HTTP_EXPOSE.
      # To expose an HTTPS port, define the port as securePort:containerPort.
      - HTTPS_EXPOSE=${DDEV_ROUTER_HTTPS_PORT}:80
    labels:
      com.ddev.site-name: ${DDEV_SITENAME}
      com.ddev.platform: ddev
      com.ddev.app-type: typo3
      com.ddev.approot: $DDEV_APPROOT
      com.ddev.app-url: $DDEV_URL
    extra_hosts: ["unneeded:127.0.0.1"]
  dba:
    container_name: ddev-${DDEV_SITENAME}-dba
    image: $DDEV_DBAIMAGE
    restart: "no"
    labels:
      com.ddev.site-name: ${DDEV_SITENAME}
      com.ddev.platform: ddev
      com.ddev.app-type: typo3
      com.ddev.approot: $DDEV_APPROOT
      com.ddev.app-url: $DDEV_URL
    depends_on:
      - db
    links:
      - db:db
    ports:
      - "80"
    environment:
      - PMA_USER=db
      - PMA_PASSWORD=db
      - VIRTUAL_HOST=$DDEV_HOSTNAME
      # HTTP_EXPOSE allows for ports accepting HTTP traffic to be accessible from <site>.ddev.local:<port>
      - HTTP_EXPOSE=8036
networks:
  default:
    external:
      name: ddev_default
volumes:
  mariadb-database:
    name: "${DDEV_SITENAME}-mariadb"

Решение:

Мы удалили все (~ / .ddev ~ / .docker и т. Д.), Удалили панель инструментов docker, ddev и виртуальный ящик и на этот раз выполнили ТОЧНО это «Шаг за шагом»:

  1. СНАЧАЛА включите виртуализацию в настройках BIOS
  2. затем установите docker Toolbox как ADMIN и позвольте Docker Toolbox также установить virtualbox с сетевым драйвером ndis (последний флажок)
  3. Подождите и пока ничего не делайте, чтобы убедиться, что увидите ACL - Вопросы
  4. Запустите виртуальный бокс от имени администратора (теперь сетевой адаптер создан)
  5. ПЕРЕЗАГРУЗИТЕ Windows, чтобы все запустилось правильно
  6. установите ddev als Administrator, позвольте ему создать ярлык и добавить себя в путь к Windows
  7. запустите терминал быстрого запуска docker и позвольте Docker Toolbox создать виртуальный контейнер по умолчанию
  8. переключиться в домашний каталог пользователей

    cd ~ mkdir web cd web mkdir testdomain cd testdomain ddev start

Благодаря fray, его намек на то, что проект ddev должен находиться в домашнем каталоге пользователей, был основной причиной, по которой он не работает.

Может быть, один или несколько из вышеперечисленных шагов не важны, но, поскольку он сейчас работает, я оставлю его как есть :-)


person Jörg velletti    schedule 10.10.2018    source источник
comment
У вас есть смонтированный в сети домашний каталог? Docker не может смонтировать сетевой диск. Обходной путь - временно изменить $ HOME (надеюсь, что вы используете git-bash) на не сетевой диск. В следующем месяце мы попытаемся решить эту проблему для людей, у которых есть домашние каталоги, подключенные к сети.   -  person rfay    schedule 10.10.2018
comment
Извините, это не помогло, поскольку $ HOME - это c: \ users \ snowm no networkdrive, также пытается временно установить $ HOME, перемещение проекта также на диск c не помогает. больше похоже на проблему с инструментарием dooker   -  person Jörg velletti    schedule 11.10.2018
comment
Я рекомендую поработать над этим с помощью git-bash для единообразия. $ HOME должен выглядеть как / c / users / snowm. Обратите внимание, что на панели инструментов docker вы должны иметь свой репозиторий где-нибудь в домашнем каталоге. См. stackoverflow.com/questions/52334250/ для получения информации об этом. - Похоже, это ваша проблема, я вижу, вы делаете /c/Data3/test/.ddev вне домашнего каталога.   -  person rfay    schedule 12.10.2018


Ответы (2)


У вас установлен брандмауэр или антивирус? Иногда возникают блокировки установки диска в докер. Зайдите в настройки вашей службы Docker и попробуйте смонтировать диск вручную в меню «Общие диски».

У меня возникла проблема с тем, что антивирус Касперского блокировал доступ к общему диску. Если у вас такой же, вы можете попробовать следующее:

Откройте PowerShell от имени администратора и используйте эту команду:

Get-NetConnectionProfile -InterfaceAlias "vEthernet (DockerNAT)"

Если для NetworkCategory задано значение Public, установите для него значение Private:

    Set-NetConnectionProfile -InterfaceAlias "vEthernet (DockerNAT)" -NetworkCategory Private

Теперь вам нужно изменить IP-адреса интерфейсов докеров. Зайдите в настройки системы и выберите сетевой центр. Нажмите «vEthernet (DockerNat)» -> «Свойства», активируйте «Интернет-протокол, версия 4» и нажмите «Свойства». Перейдите в «Дополнительно» и добавьте следующий IP-адрес 10.0.75.254 с маской подсети 255.255.255.0.

Отказ от ответственности: я использовал это раньше на моем немецком компьютере с Windows 10. Я перевел пункты меню напрямую, потому что я переключился на Linux и не вижу настоящих названий пунктов меню.

person Chris    schedule 11.10.2018
comment
спасибо за подсказку Get-NetConnectionProfile. поскольку DockerNAT не найден, установка панели инструментов Docker не сработала. Брандмауэр не активирован и антивирус не установлен. Похоже, что панель инструментов Docker на домашнем компьютере с Windows по-прежнему не является решением, которое работает как шарм. - person Jörg velletti; 11.10.2018
comment
У меня это сработало с ddev 1.10.1 / ddev 1.9.1 и Docker 2.1.0.1 в Windows 10. Немного странно, что все работало накануне. - person Mateng; 13.08.2019

В Docker Toolbox вы не можете монтировать пути за пределами домашнего каталога без дополнительной конфигурации. В конфигурации по умолчанию используется только домашний каталог. Вы пытаетесь смонтировать /c/Data3/test, который находится за пределами домашнего каталога.

Если вам нужно работать за пределами homedir, быстрый поиск в Google «как смонтировать внешний домашний каталог на панели инструментов docker» приведет вас к ссылкам типа http://support.divio.com/local-development/docker/как-использовать-каталог-вне-cusers-с-docker-toolboxdocker-for-windows, в котором объясняется, как делиться дополнительными путями с помощью пользовательского интерфейса Virtualbox.

person rfay    schedule 10.12.2018