我有一个版本的码头工具17.06.0-ce.当我尝试使用docker with command安装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
Run Code Online (Sandbox Code Playgroud)
它表明了这一点
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
Run Code Online (Sandbox Code Playgroud)
如果不挂载nginx.conf文件,一切都还可以.那么,我该如何挂载配置文件呢?
谢谢.
Jes*_*ebb 121
如果您使用的是Docker for Windows,如果您最近更改了密码,则会发生此错误.
怎么修:
docker rm -v <container_name>感谢GitHub上的BaranOrnarli提供的解决方案.
Ayu*_*hya 16
删除与容器关联的卷.找到容器名称docker ps -a然后使用以下命令删除容器:
docker rm -v <container_name>
Run Code Online (Sandbox Code Playgroud)
问题:
如果您之前尝试运行docker run命令,而该文件不在其应位于主机目录中的位置,则可能会出现您所面临的错误.在这种情况下,docker守护程序会在其位置的容器内创建一个目录.当正确的文件放入主机目录并再次运行docker时,后来无法映射到正确的文件.
解:
删除与容器关联的卷.如果您不关心其他容器卷,您还可以使用:
docker volume rm $(docker volume ls -q)
Run Code Online (Sandbox Code Playgroud)
Mat*_*ron 14
因为docker识别$PWD/conf/nginx.conf为文件夹而不是文件.
检查$PWD/conf/目录是否包含nginx.conf作为目录.
试试吧
> cat $PWD/conf/nginx.conf
cat: nginx.conf/: Is a directory
Run Code Online (Sandbox Code Playgroud)
否则,打开Docker问题.
它配置相同,对我来说很好.
使用Docker Toolbox 的人的答案
这里至少有 3 个答案涉及这个问题,但没有正确解释,也没有给出完整的解决方案。这只是一个文件夹安装问题。
问题描述:
Docker Toolbox 通过创建虚拟机(在捆绑的 VirtualBox 中)绕过了 Docker 的 Hyper-V 要求。Docker 已安装并在 VM 内运行。为了使 Docker 正常运行,它需要能够从主机访问 。这里没有。
在我安装 Docker Toolbox 之后,它创建了 VirtualBox VM 并且只安装C:\Users到机器上,作为\c\Users\. 我的项目在C:\projects安装的卷上无处可去。当我将路径发送到 VM 时,它不存在,因为C:\projects没有安装。因此,上面的错误。
假设我的项目包含我的 ngnix 配置 C:/projects/project_name/
修复它:
C:\projects到VM 中的/projects( ROOT/projects),这意味着现在您可以像这样引用项目中的任何路径:/projects/project_name- 因为project_namefromC:\projects\project_name现在已挂载。要使用相对路径,请考虑命名的路径
c/projects不projects
在我的 docker 文件中,我现在引用nginx.conf如下:
volumes:
- /projects/project_name/docker_config/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
Run Code Online (Sandbox Code Playgroud)
nginx.conf 实际所在的位置 C:\projects\project_name\docker_config\nginx\nginx.conf
@Ayushya 给出的解释是我遇到这个有点令人困惑的错误消息的原因,并且可以像这样轻松完成必要的内务处理:
$ docker container prune
$ docker volume prune
Run Code Online (Sandbox Code Playgroud)
小智 6
我有同样的问题。我在 Windows 10 17.09 中使用带有 WSL 的 Docker 桌面。
问题原因:
问题是 Docker for Windows 希望您以与此匹配的格式提供卷路径:
/c/Users/username/app
但是,WSL 使用以下格式:
/mnt/c/Users/username/app
这令人困惑,因为在控制台中检查文件时我看到了它,对我来说一切都是正确的。我不知道 Docker for Windows 对卷路径的期望。
问题的解决方法:
我绑定了自定义挂载点来修复 Docker for Windows 和 WSL 的差异:
sudo mount --bind /mnt/c /c
就像这个惊人的指南中所建议的那样:为 Windows 和 WSL 设置 Docker 以完美地工作,现在一切都完美无缺。
在我开始使用 WSL 之前,我使用的是 Git Bash,我也遇到了这个问题。
也许有人觉得这很有用。我的撰写文件安装了以下卷
./file:/dir/file
Run Code Online (Sandbox Code Playgroud)
由于 ./file 不存在,因此它被挂载到 ABC 中(默认为文件夹)。
就我而言,我有一个容器是由
docker commit ABC cool_image
Run Code Online (Sandbox Code Playgroud)
当我后来创建 ./file 并运行时docker-compose up,出现错误:
[...] 您是否正在尝试将目录挂载到文件上(或反之亦然)?检查指定的主机路径是否存在并且是预期的类型。
启动的容器cool_image记得那/dir/file是一个目录,它与最近创建和安装的目录冲突./file。
解决方案是:
touch ./file
docker run abc_image --name ABC -v ./file:/dir/file
# ... desired changes to ABC
docker commit ABC cool_image
Run Code Online (Sandbox Code Playgroud)
在我的 Mac 上,我必须取消选中“设置 -> 常规”中的“使用 gRPC FUSE 进行文件共享”框
| 归档时间: |
|
| 查看次数: |
47193 次 |
| 最近记录: |