五.管理容器中的数据管理-持久化

网友投稿 267 2022-10-29

五.管理容器中的数据管理-持久化

将数据从宿主机挂到容器的三种方法:

第一种:Volume 卷的方式: Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes);保存数据最佳方式,第二种:Bind mounts 将宿主机位置文件或目录挂载到容器中,使用场景,容器想使用宿主机的某个目录;第三种:Tmpfs 挂载存储在主机的内存中,而不会写入主机的文件系统。如果不希望数据持久化存储在任何位置,可以使用tmpfs,同时避免写入容器可写层提高性能;

1.卷的挂在方式创建一个容器并且挂载目录-v 将宿主机目录或文件挂载到容器内的/webapp 目录;docker run -d -P --name web2 -v /src/webapp:/webapp training/webapp python app.py

docker run -d --name nginx02 --mount src=nginx_vol,dst=/usr/share/nginx/html nginx

#docker inspect nginx02 #查看目录;"Mounts": [{"Type": "volume","Name": "nginx_vol","Source": "/var/lib/docker/volumes/nginx_vol/_data","Destination": "/usr/share/nginx/html",

#数据卷里有被从容器挂载后显示的文件

ls /var/lib/docker/volumes/nginx_vol/_data

50x.html index.html测试 echo welcome python > /var/lib/docker/volumes/nginx_vol/_data/index.html 修改数据可以直接生效;

如果nginx02故障失效,可以重新启动一个容器进行访问;

docker run -d --name nginx04 -p 88:80 --mount src=nginx_vol,dst=/usr/share/nginx/html nginx

同时挂载的目录也可以共享到其他容器;

查看端口映射:iptables -t nat --list-rules DOCKER

2.Bind mount :将宿主机上的任意文件挂在到容器中。

docker run -d --name nginx01 -p 88:80 --mount type=bind,src=/mnt/,dst=/usr/share/nginx/html nginx src:宿主机目录 dst:容器中目录。

ls /mnt/ # 查看没有数据,而volume 挂载后会显示容器中的文件或数据;

到容器nginx01查看 # ls /usr/share/nginx/html/ 没有文件 因为:#用在容器启动之前没数据的场景#如果挂载目标在容器中非空目录,则该目录现有内容将被隐藏

在容器中添加文件即可同步到宿主机/mnt 是软连接关系

echo hello python > /usr/share/nginx/html/index.html

ls /mnt/

index.html

将宿主机文件挂载到容器目录

docker run -d --name nginx02 -p 90:80 --mount type=bind,src=/etc/,dst=/opt/ nginx

docker exec -it nginx02 bash

ls /opt/

如果删除nginx02, docker rm -f nginx02 #docker run -d --name nginx03 -p 91:80 -v /etc/:/opt/ nginx 可以正常访问,因为容器删除,它的卷可以被新容器挂在发现。

Volume特点:• 多个运行容器之间共享数据。• 当容器停止或被移除时,该卷依然存在。• 多个容器可以同时挂载相同的卷。• 当明确删除卷时,卷才会被删除。• 将容器的数据存储在远程主机或其他存储上• 将数据从一台Docker主机迁移到另一台时,先停止容器,然后备份卷的目录(/var/lib/docker/volumes/)

Bind Mounts特点:• 从主机共享配置文件到容器。默认情况下,挂载主机/etc/resolv.conf到每个容器,提供DNS解析。• 在Docker主机上的开发环境和容器之间共享源代码。例如,可以将Maven target目录挂载到容器中,每次在Docker主机上构建Maven项目时,容器都可以访问构建的项目包。• 当Docker主机的文件或目录结构保证与容器所需的绑定挂载一致时

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:录像机HMDI和VGA输出接口的区别和使用方法
下一篇:解决SpringBoot引用别的模块无法注入的问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~