Имею докер с версией 17.06.0-ce
. Когда я пытаюсь установить NGINX с помощью докера с помощью команды:
docker run -p 80:80 -p 8080:8080 --name nginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx:latest
Это показывает, что
docker: ответ об ошибке от демона: ошибка времени выполнения oci: container_linux.go: 262: запуск процесса контейнера вызвал "process_linux.go: 339: инициализация контейнера вызвала \" rootfs_linux.go: 57: монтирование \\ "/ appdata / nginx / conf / nginx.conf \\ "для корневой файловой системы \\ "/ Var / Библиотека / грузчик / AUFS / мнт / dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0 \\" в \\" / Var / Библиотека / грузчик / AUFS / мнт / dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0 / и т.д. / Nginx / nginx.conf \\ "вызвал \\" не каталог \\ "\" ": вы пытаетесь смонтировать каталог в файл (или наоборот)? Проверьте, существует ли указанный путь к хосту и является ли он ожидаемым типом.
Если не монтировать nginx.conf
файл, все в порядке. Итак, как я могу смонтировать файл конфигурации?
ls -al .
? Хочу посмотреть, как выглядит ваш pwd.docker rm …
), а затем воссоздать его.Ответы:
Потому что докер распознает
$PWD/conf/nginx.conf
как папку, а не как файл. Проверьте,$PWD/conf/
содержится ли в каталогеnginx.conf
как каталог .Тест с
В противном случае откройте проблему с Docker .
У меня все работает с той же конфигурацией.
источник
-v
nginx.conf
он уже существовал ранее по этому пути, Linux распознал бы его как файл, верно?Этого больше не должно происходить (начиная с v2.2.0.0), см. Здесь
Если вы используете Docker для Windows , эта ошибка может произойти, если вы недавно изменили свой пароль.
Как исправить:
docker rm -v <container_name>
Обновление: описанные ниже шаги могут работать без предварительного удаления томов.
Благодарим BaranOrnarli на GitHub за решение.
источник
TL; DR : удалить тома, связанные с контейнером.
Найдите имя контейнера, используя, а
docker ps -a
затем удалите этот контейнер, используя:Проблема:
Ошибка, с которой вы столкнулись, может возникнуть, если вы ранее пытались запустить
docker run
команду, когда файл отсутствовал в том месте, где он должен был находиться в каталоге хоста.В этом случае демон docker создал бы каталог внутри контейнера на своем месте, который позже не смог бы сопоставить с правильным файлом, когда правильные файлы помещаются в каталог хоста и команда docker запускается снова.
Решение:
Удалите тома, связанные с контейнером. Если вас не беспокоят другие объемы контейнера, вы также можете использовать:
источник
docker volume
/ интерфейс предназначены только для анонимных и именованных томов, которые не являются частью исходного вопроса./var/lib/docker/aufs/mnt/dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0\\\"
Мой вывод: у него уже есть папка из-за предыдущего запуска, поэтому, если вы попытаетесь сопоставить файл с этой папкой, это не удастся.Ответ для людей, использующих Docker Toolbox
Здесь было как минимум 3 ответа, затрагивающих проблему, но не объясняющих ее должным образом и не дающих полного решения. Это просто проблема с подключением папки .
Описание проблемы:
Docker Toolbox обходит требования Hyper-V к Docker, создавая виртуальную машину (в VirtualBox, которая поставляется в комплекте). Докер установлен и запущен внутри виртуальной машины. Чтобы Docker работал должным образом, он должен иметь доступ к файлу с хост-компьютера. А здесь это не так.
После того, как я установил Docker Toolbox, он создал виртуальную
C:\Users
машину VirtualBox и подключился только к машине, как\c\Users\
. Мой проект былC:\projects
никуда не на смонтированном томе. Когда я отправлял путь к виртуальной машине, он не существовал, посколькуC:\projects
не был установлен. Следовательно, ошибка выше.Допустим, у меня был проект, содержащий мою конфигурацию ngnix в
C:/projects/project_name/
Исправляем:
Перейдите в VirtualBox, щелкните правой кнопкой мыши по умолчанию (виртуальная машина из Docker)> Настройки> Общие папки.
Щелкнув небольшой значок с плюсом справа, добавьте новую долю. Я использовал следующие настройки:
C:\projects
на/projects
(ROOT/projects
) в виртуальной машине, что означает, что теперь вы можете ссылаться на любой путь в таких проектах, как этот:/projects/project_name
- потому чтоproject_name
fromC:\projects\project_name
теперь смонтирован.В моем файле докеров я теперь ссылаюсь на
nginx.conf
это:Где на самом деле nginx.conf находится в
C:\projects\project_name\docker_config\nginx\nginx.conf
источник
Объяснение, данное @Ayushya, стало причиной того, что я обнаружил это несколько сбивающее с толку сообщение об ошибке, и необходимое обслуживание можно легко выполнить следующим образом:
источник
У меня такая же проблема. Я использовал Docker Desktop с WSL в Windows 10 17.09.
Причина проблемы:
Проблема в том, что Docker для Windows ожидает, что вы предоставите пути к своим томам в формате, который соответствует этому:
/c/Users/username/app
НО, WSL вместо этого использует формат:
/mnt/c/Users/username/app
Это сбивает с толку, потому что при проверке файла в консоли я его увидел, и для меня все было правильно. Я не знал, что Docker для Windows ожидает от путей к томам .
Решение проблемы:
Я связал пользовательские точки монтирования, чтобы исправить различия между Docker для Windows и WSL:
sudo mount --bind /mnt/c /c
Как предлагается в этом удивительном руководстве: Настройка Docker для Windows и WSL для безупречной работы, и теперь все работает отлично.
До того как я начал использовать WSL, я использовал Git Bash, и у меня тоже была эта проблема.
источник
Я использую Docker ToolBox для Windows. По умолчанию диск C подключается автоматически, поэтому, чтобы смонтировать файлы, убедитесь, что ваши файлы и папки находятся внутри диска C DRIVE .
Пример:
C:\Users\%USERNAME%\Desktop
источник
Может, кому-то это пригодится. В моем файле создания был установлен следующий том
Поскольку ./file не существует, он был смонтирован в ABC (по умолчанию как папка).
В моем случае у меня был контейнер в результате
Когда я позже создал ./file и запустил
docker-compose up
, у меня была ошибка:Контейнер, извлеченный из
cool_image
памяти, запомнил, что это/dir/file
был каталог, и он конфликтовал с недавно созданным и смонтированным./file
.Решение было:
источник
В Windows 10 я просто получаю эту ошибку, ничего не меняя в своем
docker-compose.yml
файле или конфигурации Docker в целом.В моем случае я использовал VPN с политикой брандмауэра, которая блокирует порт 445.
После отключения от VPN проблема исчезает.
Поэтому я рекомендую проверить ваш брандмауэр и не использовать прокси или VPN при запуске Docker Desktop.
Проверьте Docker для Windows - правила брандмауэра для общих дисков для получения дополнительных сведений.
Надеюсь, это поможет кому-то другому.
источник
Не могли бы вы использовать абсолютный / полный путь вместо
$PWD/conf/nginx.conf
? Тогда все заработает.EX:docker run --name nginx-container5 --rm -v /home/sree/html/nginx.conf:/etc/nginx/nginx.conf -d -p 90:80 nginx b9ead15988a93bf8593c013b6c27294d38a2a40f4ac75b1c1ee362de4723765b root@sree-VirtualBox:/home/sree/html# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b9ead15988a9 nginx "nginx -g 'daemon of…" 7 seconds ago Up 6 seconds 0.0.0.0:90->80/tcp nginx-container5 e2b195a691a4 nginx "/bin/bash" 16 minutes ago Up 16 minutes 0.0.0.0:80->80/tcp test-nginx
источник
У меня возникла такая же проблема при использовании Docker через WSL1 в Windows 10 с помощью этой командной строки:
Я решил это, изменив путь к файлу в хост-системе на абсолютный путь в стиле UNIX:
или используя абсолютный путь в стиле Windows с
/
вместо\
разделителей пути:источник
Обновление Virtual Box до 6.0.10 устранило эту проблему для Docker Toolbox.
https://github.com/docker/toolbox/issues/844
У меня была такая ошибка:
После обновления VitualBox все команды работали нормально 🎉
источник
Была такая же царапина на голове, потому что у меня не было файла локально, поэтому он был создан как папка.
источник
У меня была аналогичная ошибка на niginx в среде Mac. Docker неправильно распознал файл default.conf. После изменения относительного пути на абсолютный, ошибка была исправлена.
источник
Для меня это не сработало:
Но это работает нормально (очевидно, мой файл конфигурации тоже переместился в новый каталог:
источник
Я поделюсь своим случаем здесь, так как это может сэкономить много времени кому-то еще в будущем.
У меня был отлично работающий docker-compose на моих macos, пока я не начал использовать docker-in-docker в Gitlab CI. Мне были даны разрешения только на работу в качестве мастера в репозитории, а Gitlab CI размещается на собственном хостинге и настраивается кем-то другим, и никакой другой информации о том, как она настраивается, и т.
Следующее вызвало проблему:
Только когда я заметил, что это может работать под окнами (часы царапают голову), я попытался переименовать wodpress.conf в default.conf и просто установить пути к каталогам:
Это решило проблему!
источник
У меня была эта проблема под Windows 7, потому что мой файл докеров находился на другом диске.
Вот что я сделал, чтобы исправить проблему:
На данный момент
docker-compose up
должно работать.источник
У меня такая же ошибка в Windows10 после обновления Docker: 2.3.0.2 (45183).
Я использовал такие абсолютные пути,
//C/workspace/nginx/nginx.conf
и все работало как шарм.Обновление сломало мою докер-компоновку, и мне пришлось изменить пути на
/C/workspace/nginx/nginx.conf
сингл/
для корня.источник
Обратите внимание, что эта ситуация также произойдет, если вы попытаетесь смонтировать том с хоста, который не был добавлен в раздел Ресурсы> Общий доступ к файлам в настройках Docker.
Добавление корневого пути в качестве ресурса общего доступа к файлам теперь позволит Docker получить доступ к ресурсу для его подключения к контейнеру. Обратите внимание, что вам может потребоваться стереть содержимое вашего контейнера Docker, чтобы попытаться повторно смонтировать том.
Например, если ваше приложение находится по адресу
/mysites/myapp
, вы захотите добавить его/mysites
в качестве ресурса для совместного использования файлов.источник
У меня была та же проблема, docker-compose создавал каталог вместо файла, а затем сбой на полпути.
Что я сделал:
Запустите контейнер без сопоставления.
Скопируйте
.conf
файл в расположение хоста:docker cp containername:/etc/nginx/nginx.conf ./nginx.conf
Снимите контейнер (
docker-compose down
).Положите карту обратно.
Снова установите контейнер.
Docker Compose найдет
.conf
файл и отобразит его, вместо того, чтобы пытаться создать каталог .источник
Я решил проблему с монтированием. Я использую среду Win 7, и у меня возникла такая же проблема.
В контейнере есть каталог синхронизации по умолчанию
C:\Users\
, поэтому я переместил свой проект в негоC:\Users\
, а затем воссоздал его. Теперь это работает.источник