无法将带有空格的主机目录映射到容器目录绑定安装 - Docker 快速入门终端 (Bash),Windows 10

如何解决无法将带有空格的主机目录映射到容器目录绑定安装 - Docker 快速入门终端 (Bash),Windows 10

我是 Docker 的新手。我正在学习使用绑定安装和卷的教程,我使用的是 Windows 10 Docker 快速入门终端 (bash) 和 Docker 19.03.1。

我在目录.../dockerfile-sample-2注意:此路径包含空格)包含:

$ ls -al
total 18
drwxr-xr-x 1 Tommaso 197121   0 mag 10 11:55 ./
drwxr-xr-x 1 Tommaso 197121   0 mag  1 19:20 ../
-rw-r--r-- 1 Tommaso 197121 410 apr 11 09:06 Dockerfile
-rw-r--r-- 1 Tommaso 197121 249 apr 11 09:06 index.html
-rw-r--r-- 1 Tommaso 197121   0 mag 10 11:55 testme.txt

现在我运行并得到以下结果:

.../dockerfile-sample-2
$ docker container run -d --name nginx -p 80:80 -v $(pwd):/usr/share/nginx/html nginx
b8f24ee0e0b76d0b06503ce90fbd6a9e2110e40eaa4432e8c77556510c61a989

.../dockerfile-sample-2
$ docker container run -d --name nginx2 -p 8080:80 nginx
3450433e18097291936d7e62071769521eb36e92f509ad931c9e927f135df71a

现在,根据教程,通过访问 IP 地址 http://192.168.99.101/http://192.168.99.101:8080,我应该能够分别看到 index.html 文件和原始 nginx 登陆页面。

然而,我只得到了两次原始的 nginx 登陆页面。

更多,根据我的教程,通过运行

docker container exec -it nginx bash
cd /usr/share/nginx/html
ls –al

我应该得到与上一个目录 .../dockerfile-sample-2 相同的内容。

然而,我只得到

root@b8f24ee0e0b7:/usr/share/nginx/html# ls -al
total 16
drwxr-xr-x 2 root root 4096 Apr 13 19:20 .
drwxr-xr-x 3 root root 4096 Apr 13 19:20 ..
-rw-r--r-- 1 root root  494 Apr 13 15:13 50x.html
-rw-r--r-- 1 root root  612 Apr 13 15:13 index.html

再一次,根据我的教程,如果我在 .../dockerfile-sample-2 目录中创建一个新文件,它应该出现在

的结果中
docker container exec -it nginx bash
cd /usr/share/nginx/html
ls –al

但它没有。

我做错了什么?


这里有一些上下文:

我的正在运行的容器

$ docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
3450433e1809        nginx               "/docker-entrypoint.…"   20 minutes ago      Up 20 minutes       0.0.0.0:8080->80/tcp   nginx2
b8f24ee0e0b7        nginx               "/docker-entrypoint.…"   21 minutes ago      Up 21 minutes       0.0.0.0:80->80/tcp     nginx

在我的Dockerfile:

# this shows how we can extend/change an existing official image from Docker Hub
FROM nginx:latest
# highly recommend you always pin versions for anything beyond dev/learn

WORKDIR /usr/share/nginx/html
# change working directory to root of nginx webhost
# using WORKDIR is preferred to using 'RUN cd /some/path'

COPY index.html index.html

# I don't have to specify EXPOSE or CMD because they're in my FROM

在我的 Index.html 中:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">

  <title>Your 2nd Dockerfile worked!</title>

</head>

<body>
  <h1>You just successfully ran a container with a custom file copied into the image at build time!</h1>
</body>
</html>

更新:

我敢打赌这个问题与当前工作目录包含空格有关。

所以我删除了 nginx 容器并尝试运行其他容器。

以下命令:

docker container run -d --name nginx -p 80:80 -v "$(pwd)":/usr/share/nginx/html nginx

docker container run -d --name nginx -p 80:80 -v "/d/Files Tommaso/Programmazione/Docker/udemy-docker-mastery-main/dockerfile-sample-2:/usr/share/nginx/html" nginx

docker container run -d --name nginx -p 80:80 -v "/d/Files Tommaso/Programmazione/Docker/udemy-docker-mastery-main/dockerfile-sample-2":/usr/share/nginx/html nginx

当我尝试访问 http://192.168.99.101/ 时,让我的浏览器获得 403 Forbidden


而这些其他命令:

docker container run -d --name nginx -p 80:80 -v $(pwd):/usr/share/nginx/html nginx

docker container run -d --name nginx -p 80:80 -v /$(pwd):/usr/share/nginx/html nginx

docker container run -d --name nginx -p 80:80 -v `pwd -W`:/usr/share/nginx/html nginx

docker container run -d --name nginx -p 80:80 -v $(pwd):/usr/share/nginx/html nginx

docker container run -d --name nginx -p 80:80 -v /d/Files Tommaso/Programmazione/Docker/udemy-docker-mastery-main/dockerfile-sample-2:/usr/share/nginx/html nginx

让我的终端响应:

C:\Applicazioni_Tommaso\Docker Toolbox\docker.exe: invalid reference format: repository name must be lowercase.
See 'C:\Applicazioni_Tommaso\Docker Toolbox\docker.exe run --help'.

我敢打赌这意味着它无法解析空格。


以及这些其他命令:

docker container run -d --name nginx -p 80:80 -v %cd%:/usr/share/nginx/html nginx

让我的终端响应:

C:\Applicazioni_Tommaso\Docker Toolbox\docker.exe: Error response from daemon: create YYYY: "YYYY" includes invalid characters for a local volume name,only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory,use absolute path.

解决方法

经过多次尝试,我可以假设

  • 在 Windows 10 上
  • 使用 Docker 快速入门终端

Docker 19.03.1 无法管理 <path containing spaces>-v 参数的使用

docker container run -d --name <name> -p 80:80 -v <path containing spaces>:<destination path> <image>

我发现解决此问题的唯一方法是将源卷目录更改为文件夹中不包含空格的目录,然后运行

docker container run -d --name nginx -p 80:80 -v $(pwd):/usr/share/nginx/html nginx

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res