一、存储持久化
docker容器不保存任何数据
重要数据可以使用外部卷存储(数据持久化)
容器可以映射真实主机目录或共享存储为卷
将外部卷映射到容器中提供持久化存储(规则:目录不存在就自动创建;目录存在就直接覆盖掉。语法:docker run -v 外部目录:容器目录 -it 容器名:标签 bash)
外部卷可以给多个容器映射使用,这种方式可以解决容器间共享问题
因此,可以使用以下方式实现不同宿主机上的容器之间文件共享问题:
部署NFS服务:
[root@node1 ~]# yum install -y nfs-utils
root@node1 ~]# mkdir /var/webroot
[root@node1 ~]# chmod 777 /var/webroot/
[root@node1 ~]# vim /etc/exports #表示将本地/var/webroot目录作为共享磁盘,使用权限为可读可写
/var/webroot *(rw)
[root@node1 ~]# systemctl start nfs
[root@node1 ~]# systemctl enable nfs
挂载并使用nfs(Docker1节点):
[root@docker1 ~]# yum install -y nfs-utils
[root@docker1 ~]# showmount -e 192.168.0.30 #查看192.168.0.30上可挂载的nfs
Export list for 192.168.0.30:
/var/webroot *
[root@docker1 ~]# mount -t nfs 192.168.0.30:/var/webroot /mnt #挂载远程磁盘到/mnt
[root@docker1 ~]# docker run -itd -v /mnt:/var/www/html httpd:latest #将宿主机/mnt目录映射到容器的/var/www/html目录 #http:latest镜像是从网上下载的
[root@docker1 ~]# vim /mnt/index.html #在宿主机的/mnt下新建一个index页面,内容为akakak
akakak
[root@docker1 ~]# curl 172.17.0.2 #查看容器发布的http内容变为了akakak
akakak
挂载并使用nfs(Docker2节点):
[root@docker2 ~]# yum install -y nfs-utils
[root@docker2 ~]# mount -t nfs 192.168.0.30:/var/webroot /mnt
[root@docker2 ~]# docker run -itd -v /mnt:/var/www/html 192.168.0.30:50000/myos:httpd #从镜像仓库创建并运行http容器
[root@docker2 ~]# echo bsbsbs>/mnt/index.html
[root@docker2 ~]# curl 172.17.0.2
bsbsbs
因此,如果有多个http容器的话,只需要在一个Docker节点改变挂载目录下的index文件内容就可以改变所有http容器发布的内容,同时这个index还可以永久保存到nfs服务器上,即使容器坏了也不会消失。
标签:容器,存储,持久,mnt,webroot,nfs,var,Docker,root From: https://www.cnblogs.com/vorn/p/17470098.html