Docker 教程

Docker 数据持久化-绑定挂载(Bind mounts)

在 Docker 中,绑定挂载(Bind mounts)是一种将宿主机上的文件或目录挂载到容器中的方式。它允许在容器和宿主机之间共享数据,并且可以对宿主机上的文件进行实时修改,容器可以立即看到这些修改。

绑定挂载特点

  • 数据共享:容器和宿主机可以共享文件和目录,方便在容器内外进行数据交换和处理。例如,可以在宿主机上编辑代码,容器内的应用可以立即看到这些修改。

  • 灵活性:可以挂载宿主机上的任何目录或文件,包括用户主目录、项目目录等。这使得在不同的开发和生产环境中都可以方便地使用绑定挂载。

  • 持久性:即使容器被删除,绑定挂载的宿主机目录中的数据仍然存在。这对于需要保留数据的场景非常有用。

使用方法

使用 -v 或 --mount 参数进行绑定挂载。

使用 -v 参数

root@hxstrive:~/data/wwwroot# docker run --name nginx-test -p 8000:80 -v /root/data/wwwroot:/usr/share/nginx/html -d nginx
7bbe72fc15a3f122b633c5fba7b2652d10930ebf4e81ffdce96c4a13c343d21c

这条命令的作用是在 Docker 中启动一个名为nginx-test的 Nginx 容器,并进行以下配置:

  • -p 8000:80:将容器内的 80 端口映射到宿主机的 8000 端口,这样可以通过访问宿主机的 8000 端口来访问容器内的 Nginx 服务。

  • -v /root/data/wwwroot:/usr/share/nginx/html:将宿主机上的/root/data/wwwroot目录挂载到容器内的/usr/share/nginx/html目录。这样,在宿主机的/root/data/wwwroot目录中存放的网页文件可以被容器内的 Nginx 服务访问到,实现了数据的共享和持久化。如果在宿主机上修改这个目录下的文件,容器内的 Nginx 也会立即看到这些变化。

  • -d:以守护式(后台)模式运行容器。

  • nginx:指定要运行的镜像为 Nginx。

使用 --mount 参数

root@hxstrive:~# docker run --name nginx-test -p 8000:80 --mount type=bind,source=/root/data/wwwroot,target=/usr/share/nginx/html -d nginx
e2eeea7ba76e45a26828df6267f1e57dfb2a638390b664e7e747bb971142b37a

这条命令与你之前给出的使用 -v 参数的命令作用类似,都是启动一个名为 nginx-test 的 Nginx 容器,并进行以下配置:

  • -p 8000:80:将容器内的 80 端口映射到宿主机的 8000 端口,允许通过宿主机的 8000 端口访问容器内的 Nginx 服务。

  • --mount type=bind,source=/root/data/wwwroot,target=/usr/share/nginx/html:使用 --mount 参数进行绑定挂载。这里将宿主机上的 /root/data/wwwroot 目录绑定挂载到容器内的 /usr/share/nginx/html 目录。这样可以实现宿主机和容器之间的数据共享,在宿主机上对 /root/data/wwwroot 目录中的文件进行修改,容器内的 Nginx 服务会立即反映这些变化。

  • -d:以守护式(后台)模式运行容器。

  • nginx:指定要运行的镜像为 Nginx。

注意事项

(1)权限问题:确保宿主机上的目录和文件具有适当的权限,以便容器可以正确访问它们。如果权限设置不正确,容器可能无法读取或写入挂载的目录。

(2)路径正确性:确保指定的宿主机路径和容器内路径是正确的。错误的路径可能导致挂载失败或容器无法访问所需的数据。

(3)数据一致性:在多个容器共享同一个宿主机目录时,要注意数据的一致性。如果多个容器同时写入同一个文件,可能会导致数据冲突。

总结

绑定挂载是 Docker 中一种非常实用的功能,它提供了一种灵活、高效的数据共享和持久化方式,在开发、测试和生产环境中都有广泛的应用。

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号