为什么我无法将我的文件复制到 docker 容器中?

Ank*_*ahu 7 apache file-copying docker

我正在尝试将我的文件移动到 apache 图像的 htdocs 文件夹中。她是我的 dockerfile 的样子:

FROM httpd:2.4
MAINTAINER Ankit
COPY ./public-html/ /usr/local/apache2/htdocs/
Run Code Online (Sandbox Code Playgroud)

但是 COPY 命令不会将文件复制到容器中。这是输出 - 默认情况下 index.html 在那里,我要复制的是 public-html 文件夹:

root@8453b6ffa6fd:/usr/local/apache2/htdocs# ls
index.html
Run Code Online (Sandbox Code Playgroud)

有什么我想念的吗?

更新:public-html 文件夹没有被复制,但文件 index.html 被复制到那里,这种行为的原因是什么?

UPDATE2:这是我最新的 dockerfile,用于构建和运行容器的命令。

Dockerfile:
FROM httpd:2.4
MAINTAINER Ankit
COPY public-html/ /usr/local/apache2/htdocs/public-html/

docker build -f Dockerfile -t apache .
docker run -d --name apws -v /Users/ankitsahu/workspace/docker_practi
ce/public-html:/usr/local/apache2/htdocs/ -p 80:80 apache
Run Code Online (Sandbox Code Playgroud)

当我使用 exec 命令检查内容时:

root@b54e53a231b7:/usr/local/apache2/htdocs# ls -a
.  ..  index.html  sample.html  try
Run Code Online (Sandbox Code Playgroud)

BMi*_*tch 5

如果您尝试将目录复制public-html到目录中/usr/local/apache2/htdocs以获得.../htdocs/public-html/目录,请使用以下命令:

COPY public-html/ /usr/local/apache2/htdocs/public-html/
Run Code Online (Sandbox Code Playgroud)

默认情况下,复制目录将复制该目录的内容,因此您需要在目标中命名它以显示目录。


编辑:您的运行命令包含一个将替换此目录图像内容的卷:

docker run -d --name apws -v /Users/ankitsahu/workspace/docker_practice/public-html:/usr/local/apache2/htdocs/ -p 80:80 apache
Run Code Online (Sandbox Code Playgroud)

如果您想查看图像中的内容,请不要使用卷:

docker run -d --name apws -p 80:80 apache
Run Code Online (Sandbox Code Playgroud)

如果您想使用该卷,请在您的 docker 主机上修改 /Users/ankitsahu/workspace/docker_practice/public-html 的内容。