Docker 容器内部与宿主机器的文件交互方式

在使用 Docker 进行应用程序开发和部署时,有时需要在容器内部与宿主机器进行文件交互。这篇文章将介绍 Docker 容器内部与宿主机器的文件交互方式,包括数据卷和绑定挂载两种方式,并提供示例代码。

数据卷

数据卷是将宿主机器的目录或文件挂载到容器内部的目录,从而实现容器内部与宿主机器的文件交互。数据卷可以在容器创建时指定,也可以在容器运行时动态添加。

创建容器时指定数据卷

使用 docker run 命令创建容器时,可以使用 -v 参数指定数据卷。例如,将宿主机器的 /home/user/app 目录挂载到容器内部的 /app 目录:

这样,在容器内部就可以访问宿主机器的 /home/user/app 目录,而且对该目录的修改也会同步到宿主机器上。

运行中动态添加数据卷

使用 docker volume create 命令创建一个数据卷,例如:

然后,使用 docker run 命令启动容器时,使用 --mount 参数将数据卷挂载到容器内部的目录。例如,将 myvolume 数据卷挂载到容器内部的 /data 目录:

这样,在容器内部就可以访问 myvolume 数据卷,而且对该数据卷的修改也会同步到宿主机器上。

示例代码

下面是一个使用数据卷的示例代码,创建一个名为 mynginx 的 Nginx 容器,并将宿主机器的 /home/user/nginx 目录挂载到容器内部的 /etc/nginx/conf.d 目录:

绑定挂载

绑定挂载是将宿主机器的目录或文件直接挂载到容器内部的目录,从而实现容器内部与宿主机器的文件交互。绑定挂载只能在容器创建时指定。

创建容器时指定绑定挂载

使用 docker run 命令创建容器时,可以使用 -v 参数指定绑定挂载。例如,将宿主机器的 /home/user/app 目录绑定挂载到容器内部的 /app 目录:

这样,在容器内部就可以访问宿主机器的 /home/user/app 目录,但对该目录的修改不会同步到宿主机器上。

示例代码

下面是一个使用绑定挂载的示例代码,创建一个名为 mynginx 的 Nginx 容器,并将宿主机器的 /home/user/nginx 目录绑定挂载到容器内部的 /etc/nginx/conf.d 目录:

总结

本文介绍了 Docker 容器内部与宿主机器的文件交互方式,包括数据卷和绑定挂载两种方式。数据卷可以在容器创建时指定,也可以在容器运行时动态添加;而绑定挂载只能在容器创建时指定。在实际应用中,需要根据具体需求选择合适的方式进行文件交互。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6509d76395b1f8cacd464f5d


纠错
反馈