1.Docker数据卷管理
docker分层文件系统:性能差,生命周期与容器相同 docker数据卷: mount到主机中,绕开分层文件系统 和主机磁盘性能相同,容器删除后依然保留 仅限本地磁盘,不能随容器迁移
docker提供了两种卷: bind mount , docker managed volume
bind mount 是将主机上的目录或文件mount到容器里。 使用直观高效,易于理解。 使用 -v 选项指定路径
[root@server1 ~]# docker run -d --name demo -v /gy:/usr/share/nginx/html nginx
e859c8b0e220d3e4d964fd5a25a57ae0921333356d0284c0fc4122142b2c02fe
[root@server1 ~]# echo hello > /gy/index.html #编写默认发布文件
[root@server1 ~]# curl 172.17.0.2
hello
 进入demo,查看文件是否挂载与写入成功
[root@server1 ~]# docker exec -it demo bash
root@e859c8b0e220:/# ls
bin dev docker-entrypoint.sh home lib64 mnt proc run srv tmp var
boot docker-entrypoint.d etc lib media opt root sbin sys usr
root@e859c8b0e220:/# cd /usr/share/nginx/html/
root@e859c8b0e220:/usr/share/nginx/html# ls
index.html
root@e859c8b0e220:/usr/share/nginx/html# exit

[root@server1 ~]# docker run -d --name demo -v webdata:/usr/share/nginx/html nginx
02798af636d31d0aec5a9a86a817af642a2fb071d3d0e8894976c52ef678159f
[root@server1 ~]# cd /var/lib/docker/
[root@server1 docker]# ls
builder buildkit containers image network overlay2 plugins runtimes swarm tmp trust volumes
[root@server1 docker]# cd volumes/
[root@server1 volumes]# ls

[root@server1 volumes]# cd webdata/
[root@server1 webdata]# ls
_data
[root@server1 webdata]# cd _data/
[root@server1 _data]# ls
50x.html index.html
[root@server1 _data]# curl 172.17.0.2
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {

2.卷插件
convoy卷插件实现 支持三种运行方式:devicemapper、NFS、EBS。 以下实验使用nfs方式。 跨节点数据同步
server1、2
[root@server1 ~]# yum install -y nfs-utils #安装nfs
[root@server1 ~]# mkdir /mnt/nfs #创建挂载目录
[root@server1 ~]# chmod 777 /mnt/nfs/ #给权限
[root@server1 ~]# vim /etc/exports #修改配置文件
/mnt/nfs *(rw,no_root_squash)
[root@server1 ~]# systemctl start nfs #开启nfs服务
[root@server2 ~]# yum install -y nfs-utils
[root@server2 ~]# mkdir /mnt/nfs
[root@server2 ~]# mount 172.25.14.1:/mnt/nfs/ /mnt/nfs/
[root@server2 ~]# df
172.25.14.1:/mnt/nfs 17811456 4925440 12886016 28% /mnt/nfs
convoy插件: server1 、2执行下列命令
[root@server2 ~]# tar zxf convoy.tar.gz
[root@server2 ~]# cd convoy/
[root@server2 convoy]# mv convoy* /usr/local/bin/
[root@server2 convoy]# mkdir -p /etc/docker/plugins/
[root@server2 convoy]# convoy daemon --drivers vfs --driver-opts vfs.path=/nfsdata &
[root@server2 convoy]# echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec
[root@server2 plugins]# cat /etc/docker/plugins/convoy.spec
unix:///var/run/convoy/convoy.sock
创建卷 使用卷
[root@server1 convoy]# convoy create vol1
[root@server1 convoy]# convoy list
[root@server2 ~]# cd /mnt/nfs/
[root@server2 nfs]# ls
config vol1
[root@server2 nfs]# convoy list
server1上拉起容器同步数据到server2
[root@server1 ~]# cd /mnt/nfs/vol1/
[root@server1 vol1]# ls
50x.html index.html
[root@server1 vol1]# echo westos > index.html
[root@server1 vol1]# curl 172.17.0.2
westos

[root@server2 ~]# cd /mnt/nfs/vol1/
[root@server2 vol1]# ls
50x.html index.html
[root@server2 vol1]# cat index.html
westos
 删除进程和套接字文件之后重启docker,不然接着使用docker相关命令时会很慢。  
|