Eu tenho um docker com versão 17.06.0-ce
. Quando tento instalar o NGINX usando o docker com o comando:
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
Mostra que
docker: Resposta de erro do daemon: erro de tempo de execução oci: container_linux.go: 262: iniciando processo de contêiner causado "process_linux.go: 339: inicialização de contêiner causado \" rootfs_linux.go: 57: montagem \\ "/ appdata / nginx / conf / nginx.conf \\ "a rootfs \\ "/ var / lib / janela de encaixe / aufs / mnt / dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0 \\" em \\" / var / lib / janela de encaixe / aufs / mnt / dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0 / etc / nginx / nginx.conf \\ "causou \\" não é um diretório \\ "\" ": Você está tentando montar um diretório em um arquivo (ou vice-versa)? Verifique se o caminho do host especificado existe e é do tipo esperado.
Caso não monte o nginx.conf
arquivo, está tudo bem. Então, como posso montar o arquivo de configuração?
ls -al .
? Quero ver como é o seu pwd.docker rm …
) e recriá-lo.Respostas:
Porque o docker irá reconhecer
$PWD/conf/nginx.conf
como uma pasta e não como um arquivo. Verifique se o$PWD/conf/
diretório contémnginx.conf
um diretório .Teste com
Caso contrário, abra um problema do Docker .
Está funcionando bem para mim com a mesma configuração.
fonte
-v
nginx.conf
já existisse anteriormente nesse caminho, o Linux o reconheceria como um arquivo, certo?Isso não deve mais acontecer (desde a v2.2.0.0), veja aqui
Se você estiver usando o Docker para Windows , esse erro pode ocorrer se você tiver alterado sua senha recentemente.
Como consertar:
docker rm -v <container_name>
Atualização: As etapas abaixo podem funcionar sem a necessidade de excluir os volumes primeiro.
O crédito vai para BaranOrnarli no GitHub pela solução.
fonte
TL; DR : Remova os volumes associados ao contêiner.
Encontre o nome do contêiner usando
docker ps -a
e remova-o usando:Problema:
O erro que você está enfrentando pode ocorrer se você tentou executar o
docker run
comando anteriormente enquanto o arquivo não estava presente no local onde deveria estar no diretório do host.Nesse caso, o daemon do docker teria criado um diretório dentro do contêiner em seu lugar, que posteriormente falha no mapeamento para o arquivo apropriado quando os arquivos corretos são colocados no diretório do host e o comando docker é executado novamente.
Solução:
Remova os volumes que estão associados ao contêiner. Se você não estiver preocupado com outros volumes de contêiner, também pode usar:
fonte
docker volume
comando / interface é apenas para volumes anônimos e nomeados, que não fazem parte da pergunta original./var/lib/docker/aufs/mnt/dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0\\\"
minha dedução: Já tem uma pasta devido a uma execução anterior, então se você tentar mapear um arquivo para essa pasta, ele falhará.Resposta para pessoas que usam o Docker Toolbox
Houve pelo menos 3 respostas aqui abordando o problema, mas não explicando-o corretamente e não dando uma solução completa. Este é apenas um problema de montagem de pasta .
Descrição do problema:
O Docker Toolbox ignora o requisito do Hyper-V do Docker criando uma máquina virtual (no VirtualBox, que vem incluído). O Docker é instalado e executado dentro da VM. Para que o Docker funcione corretamente, ele precisa ter acesso ao da máquina host. O que aqui não acontece.
Depois de instalar o Docker Toolbox, ele criou o VirtualBox VM e apenas montou
C:\Users
na máquina, como\c\Users\
. Meu projeto estava emC:\projects
lugar nenhum no volume montado. Quando estava enviando o caminho para a VM, ele não existia, poisC:\projects
não está montado. Daí o erro acima.Digamos que eu tivesse meu projeto contendo minha configuração ngnix em
C:/projects/project_name/
Consertando-o:
Vá para o VirtualBox, clique com o botão direito em Padrão (a VM do Docker)> Configurações> Pastas compartilhadas
Ao clicar no pequeno ícone com o sinal de mais no lado direito, adicione um novo compartilhamento. Usei as seguintes configurações:
C:\projects
para/projects
(ROOT/projects
) na VM, o que significa que agora você pode fazer referência a qualquer caminho em projetos como este:/projects/project_name
- porqueproject_name
deC:\projects\project_name
agora está montado.No meu arquivo docker, agora faço referência ao
nginx.conf
seguinte:Onde o nginx.conf realmente reside
C:\projects\project_name\docker_config\nginx\nginx.conf
fonte
A explicação dada por @Ayushya foi a razão pela qual recebi esta mensagem de erro um tanto confusa e a limpeza necessária pode ser feita facilmente assim:
fonte
Eu tive o mesmo problema. Eu estava usando o Docker Desktop com WSL no Windows 10 17.09.
Causa do problema:
O problema é que o Docker para Windows espera que você forneça seus caminhos de volume em um formato que corresponda a este:
/c/Users/username/app
MAS, em vez disso, o WSL usa o formato:
/mnt/c/Users/username/app
Isso é confuso porque ao verificar o arquivo no console eu vi, e para mim estava tudo correto. Eu não estava ciente das expectativas do Docker para Windows sobre os caminhos de volume .
Solução para o problema:
Liguei os pontos de montagem personalizados para corrigir as diferenças do Docker para Windows e WSL:
sudo mount --bind /mnt/c /c
Como sugerido neste guia incrível: Configurando o Docker para Windows e WSL para funcionar perfeitamente e tudo está funcionando perfeitamente agora.
Antes de começar a usar o WSL, eu estava usando Git Bash e também tinha esse problema.
fonte
Estou usando o Docker ToolBox para Windows. Por padrão C unidade é montada automaticamente, de modo a fim de montar os arquivos, certifique-se seus arquivos e pastas estão dentro C UNIDADE .
Exemplo:
C:\Users\%USERNAME%\Desktop
fonte
Talvez alguém ache isso útil. Meu arquivo de composição teve o seguinte volume montado
Como ./file não existia, ele foi montado no ABC (por padrão, como pasta).
No meu caso, tive um contêiner resultante de
Mais tarde, quando criei ./file e executei
docker-compose up
, tive o erro:O contêiner trazido de
cool_image
lembrou que/dir/file
era um diretório e entrou em conflito com o criado e montado recentemente./file
.A solução foi:
fonte
No Windows 10, recebo esse erro sem alterar nada no meu
docker-compose.yml
arquivo ou na configuração do Docker em geral.No meu caso, estava usando uma VPN com uma política de firewall que bloqueia a porta 445.
Depois de se desconectar da VPN, o problema desaparece.
Portanto, eu recomendo verificar seu firewall e não usar um proxy ou VPN ao executar o Docker Desktop.
Verifique Docker para janelas - regras de firewall para unidades compartilhadas para obter mais detalhes.
Espero que isso ajude mais alguém.
fonte
Você poderia usar o caminho absoluto / completo em vez de
$PWD/conf/nginx.conf
? Então vai funcionar.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
fonte
Tive o mesmo problema ao usar o Docker sobre WSL1 no Windows 10 com esta linha de comando:
Resolvi isso alterando o caminho do arquivo no sistema host para um caminho absoluto no estilo UNIX:
ou usando um caminho absoluto no estilo do Windows em
/
vez de\
separadores de caminho:fonte
Atualizar o Virtual Box para 6.0.10 corrigiu esse problema para o Docker Toolbox
https://github.com/docker/toolbox/issues/844
Eu estava enfrentando este tipo de erro:
Depois de atualizar o VitualBox, todos os comandos funcionaram perfeitamente 🎉
fonte
Sofri o mesmo arranhão na cabeça porque não tinha o arquivo localmente, então criei uma pasta.
fonte
Eu tive um erro semelhante no niginx no ambiente Mac. O Docker não reconheceu o arquivo default.conf corretamente. Depois de alterar o caminho relativo para o caminho absoluto, o erro foi corrigido.
fonte
Para mim, isso não funcionou:
Mas isso funciona bem (obviamente movi meu arquivo de configuração para um novo diretório também:
fonte
Vou compartilhar meu caso aqui, pois isso pode economizar muito tempo para outra pessoa no futuro.
Eu tinha um docker-compose funcionando perfeitamente em meus macos, até começar a usar o docker-in-docker no Gitlab CI. Eu só recebi permissão para trabalhar como Mestre em um repositório, e o Gitlab CI é auto-hospedado e configurado por outra pessoa e nenhuma outra informação foi compartilhada, sobre como é configurado, etc.
O seguinte causou o problema:
Só quando percebi que isso pode estar rodando no Windows (horas coçando a cabeça), tentei renomear o wodpress.conf para default.conf e apenas definir os caminhos de acesso dir:
Isso resolveu o problema!
fonte
Eu tive esse problema no Windows 7 porque meu dockerfile estava em uma unidade diferente.
Aqui está o que fiz para resolver o problema:
Neste ponto,
docker-compose up
deve funcionar.fonte
Recebi o mesmo erro no Windows10 após uma atualização do Docker: 2.3.0.2 (45183).
Eu estava usando caminhos absolutos como esse
//C/workspace/nginx/nginx.conf
e tudo funcionou como um encanto.A atualização quebrou meu docker-compose e tive que mudar os caminhos para
/C/workspace/nginx/nginx.conf
com um único/
para a raiz.fonte
Observe que essa situação também ocorrerá se você tentar montar um volume do host que não foi adicionado à seção Recursos> Compartilhamento de arquivo das Preferências do Docker.
Adicionar o caminho raiz como um recurso de compartilhamento de arquivos agora permitirá que o Docker acesse o recurso para montá-lo no contêiner. Observe que você pode precisar apagar o conteúdo do seu contêiner do Docker para tentar remontar o volume.
Por exemplo, se seu aplicativo estiver localizado em
/mysites/myapp
, você desejará adicionar/mysites
como o local do recurso de compartilhamento de arquivos.fonte
Eu tive o mesmo problema, docker-compose estava criando um diretório em vez de um arquivo e, em seguida, travando no meio do caminho.
O que eu fiz:
Execute o contêiner sem nenhum mapeamento.
Copie o
.conf
arquivo para o local do host:docker cp containername:/etc/nginx/nginx.conf ./nginx.conf
Remova o recipiente (
docker-compose down
).Coloque o mapeamento de volta.
Monte novamente o recipiente.
O Docker Compose encontrará o
.conf
arquivo e o mapeará , em vez de tentar criar um diretório .fonte
No meu caso foi um problema com Docker para Windows e uso de partição criptografada pelo Bitlocker. Se você tiver arquivos de projeto em arquivos criptografados após reiniciar e desbloquear a unidade, o Dokcer não vê os arquivos de projeto corretamente.
Tudo que você precisa fazer é reiniciar o Docker
fonte
Eu resolvi o problema da montagem. Estou usando um ambiente Win 7 e o mesmo problema aconteceu comigo.
O contêiner tem um diretório de sincronização padrão em
C:\Users\
, então movi meu projeto paraC:\Users\
e recriei o projeto. Agora funciona.fonte