Docker Swarm volume 数据持久化html
volume 是将宿主级的目录映射到容器中,以实现数据持久化。nginx
能够用两种方式来实现:docker
环境:vim
volume 默认模式tcp
一、管理节点:建立服务并添加数据卷ide
docker service create \ --mount type=volume,src=test,dst=/data \ --name v-hello \ busybox ping www.baidu.com
# 建立服务 docker service create \ # 建立数据卷 type=volume,src=volume名称,dst=容器目录 --mount type=volume,src=test,dst=/data \ # 服务名 --name v-hello \ # 镜像 busybox # 容器内执行指令 ping www.baidu.com
二、工做节点1或2:查看数据卷测试
命令:docker volume ls
DRIVER VOLUME NAME
local test
命令:docker volume inspect test [ { "Driver": "local", "Labels": null, # 挂载宿主级目录 "Mountpoint": "/var/lib/docker/volumes/test/_data", "Name": "test", "Options": {}, "Scope": "local" } ]
三、工做节点1或2:进入容器查看已建立数据卷spa
命令:docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 019d6e42a364 busybox:latest "ping www.baidu.com" 33 seconds ago Up 31 seconds v-hello.1.m22z2lmpk4c27a9nsji6q0mog
# 一、进入容器 docker exec -it 019d6e42a364 sh
# 二、容器内进入数据卷节点 / # cd /data /data #
# 三、容器外进入数据卷目录建立文件 cd /var/lib/docker/volumes/test/_data touch a.txt
# 四、容器内测试data目录数据 完成测试! /data # ls a.txt
volume NFS共享存储模式(推荐)3d
1、搭建NFS服务与客户端code
一、管理节点:安装nfs服务端、配置nfs主配置文件、添加权限、启动
yum install nfs-utils -y
vim /etc/exports
# 添加目录给相应网段访问并添加读写权限 /opt/docker/wwwroot 192.168.1.0/24(rw)
# 建立共享目录,添加权限 mkdir -p /opt/docker/wwwroot chmod 777 /opt/docker/wwwroot/
# 开启rpc服务 systemctl start rpcbind
# 启动服务并设置开机自启 systemctl start nfs
二、工做节点:安装nfs客户端、启动服务
yum install nfs-utils -y
# 开启rpc服务 systemctl start rpcbind # 启动服务并设置开机自启 systemctl start nfs
2、NFS建立共享数据卷
一、管理节点:使用NFS共享存储建立服务及数据卷
docker service create --mount 'type=volume,src=nfs-test,dst=/usr/share/nginx/html,volume-driver=local,volume-opt=type=nfs,volume-opt=device=192.168.1.79:/opt/docker/wwwroot,"volume-opt=o=addr=192.168.1.79,vers=4,soft,timeo=180,bg,tcp,rw"' -p 8888:80 --name nginx nginx:1.12
# 存储类型 type=volume, # volume名称, src=<VOLUME-NAME>, # 目标路径 dst=<CONTAINER-PATH>, # 官方配置 volume-driver=local, # 服务类型 volumeopt=type=nfs, # 官方配置参数 volume-opt=device=<nfs-server>:<nfs-path>, "volume-opt=o=addr=<nfsaddress>,vers=4,soft,timeo=180,bg,tcp,rw"‘ \
二、工做节点1或2:查看建立volumes
docker volume inspect nfs-test
[ { "CreatedAt": "2018-11-08T15:16:35+08:00", "Driver": "local", "Labels": {}, # 工做节点宿主级:数据存放位置 "Mountpoint": "/var/lib/docker/volumes/nfs-test/_data", "Name": "nfs-test", "Options": { # 管理几点共享存储位置,与工做节点共享 "device": "192.168.1.79:/opt/docker/wwwroot", "o": "addr=192.168.1.79,vers=4,soft,timeo=180,bg,tcp,rw", "type": "nfs" }, "Scope": "local" } ]
三、工做节点1或2:测试数据卷同步
# 管理节点:/opt/docker/wwwroot 目录下建立test文件 touch test # 工做节点:查看宿主节点宿主是否同步 ls /var/lib/docker/volumes/nfs-test/_data test # 工做节点:进入容器节点查看容器是否同步 docker exec -it 7429f79519eb sh ls /usr/share/nginx/html test