Docker-持久化存储

容器内部不保存数据,只提供服务。
重要的数据需要使用外部卷存储。(数据持久化)
容器可以使用真机的目录,或者共享存储作为存储卷。

启动docker时,将真机的目录挂在到docker下:

docker run -it -v 真机目录:docker中目录 容器名
mkdir /tmp/docker_data
docker run -it -v /tmp/docker_data:/abc myos:test	
# -v表示将本地目录与docker中的目录进行映射,会覆盖docker中对应目录的已有内容
# 真机上的/tmp/docker_data和docker中的/abc是同一个目录
# 多个容器可以使用真机上的同一个目录,从而实现数据的共享

# 一个docker可以使用真机上的多个目录作为卷
docker run -it -v /tmp/data1:/abc -v /tmp/data2:/def myos:test
# 多个docker也可以使用同一个目录作为卷,这样就实现了数据共享


如果想要实现多台主机上的多个docker容器共享一个目录
可以将NFS或者Ceph共享给多台主机,然后多台主机共享这个目录

Docker-持久化存储_第1张图片

例:使用NFS,实现多台主机上的多个docker共享同一个目录

NFS主机:
mkdir /data_dir
chmod 777 /data_dir

yum -y install nfs-utils
vim /etc/exports
/data_dir	*(rw, no_root_squash)

systemctl restart nfs-server
systemctl restart nfs-secure
exports -rv

echo "hello nfs docker!" > /data_dir/index.html


docker主机:
yum -y install nfs-utils nfs-server
systemctl restart nfs-server
mkdir /mnt/page
mount -t nfs 192.168.80.1:/data_dir /mnt/page

docker run -it -v /mnt/page:/var/www/html myhttp:test
docker run -it -v /mnt/page:/var/www/html myhttp:test
# 两个docker容器共享同一个目录,192.168.80.1主机的/mnt/page

Docker网络架构:

docker network list	#查看docker网络模型
bridge:桥接
host:仅主机,不常用
null:无网络,不常用


启动docker服务的时候,真机上会产生一个docker0的虚拟交换机,这个交换机连接所有的容器

docker network create --subnet=10.10.10.0/24 docker1	#创建一个名字为docker1的虚拟交换机,网段是10.10.10.0/24
# 通过ipconfig可以查看到这个交换机,但是名字不是docker1

docker run -it --network=docker1 myos:test #启动容器,指定使用的虚拟交换机

docker network inspect docker1	#查看虚拟交换机信息


在本地主机上(192.168.80.2)启动的docker容器,其他主机是不能访问这个容器的服务的
因此需要将docker容器的端口和本地主机上的端口进行绑定
docker run -it[d] -p 真机端口:容器服务对应端口 容器名
docker run -it[d] -p 80:80 myhttp:test	#将本地的80端口和docker容器的80端口进行绑定

写总结的第七十五天!!!

你可能感兴趣的:(Docker-持久化存储)