如何实现“docker 宿主机挂载有文件 容器里没有”

作为一名经验丰富的开发者,我来教你如何实现在Docker中宿主机挂载有文件,但容器中却不存在这个文件的操作。

流程图

flowchart TD
    A[准备宿主机文件] --> B[运行容器]
    B --> C[查看容器中文件]
    C --> D[拷贝文件到容器]
    D --> E[查看容器中文件]

步骤

下面是详细的步骤和每一步需要做的操作:

  1. 准备宿主机文件

在宿主机上准备一个你想要挂载到容器的文件,比如一个名为“file.txt”的文本文件。

  1. 运行容器

使用下面的命令运行一个容器,将宿主机的文件挂载到容器中的指定路径:

docker run -it -v /宿主机文件路径:/容器内文件路径 镜像名称
  • -it:以交互模式运行容器
  • -v:指定挂载的文件路径,格式为“宿主机文件路径:容器内文件路径”
  • 镜像名称:需要运行的镜像名称

示例命令:

docker run -it -v /home/user/file.txt:/app/file.txt ubuntu

这个命令将在容器中运行一个Ubuntu镜像,并将宿主机的“/home/user/file.txt”文件挂载到容器中的“/app/file.txt”路径。

  1. 查看容器中文件

使用下面的命令进入容器,并查看容器中的文件:

docker exec -it 容器名称 /bin/bash

示例命令:

docker exec -it container1 /bin/bash

这个命令将进入名为“container1”的容器。

然后,使用以下命令查看容器中的文件:

ls 容器内文件路径

示例命令:

ls /app/file.txt

如果容器中不存在这个文件,你会看到一个错误提示。

  1. 拷贝文件到容器

如果容器中不存在宿主机文件,你需要将宿主机文件拷贝到容器中。

首先,退出容器,回到宿主机命令行。

使用下面的命令将宿主机文件拷贝到容器中:

docker cp 宿主机文件路径 容器名称:容器内文件路径

示例命令:

docker cp /home/user/file.txt container1:/app/file.txt

这个命令将将宿主机的“/home/user/file.txt”文件拷贝到名为“container1”的容器的“/app/file.txt”路径。

  1. 查看容器中文件

再次使用第3步的命令进入容器,并查看容器中的文件。你会发现容器中已经存在了宿主机的文件。

至此,你已经成功实现了在Docker中宿主机挂载有文件,但容器中却不存在这个文件的操作。

希望这篇文章对你有帮助!