IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> docker(五)-数据卷管理(bind mount、docker manmaged volume)、convoy卷插件 -> 正文阅读

[系统运维]docker(五)-数据卷管理(bind mount、docker manmaged volume)、convoy卷插件

1、 docker 数据卷管理简介

在这里插入图片描述

2 、bind mount 挂载方式

在这里插入图片描述

[root@server1 ~]# docker rm -f 'docker ps -aq'  删除所有容器
[root@server1 ~]# docker network prune  删除所有没有使用的网络
Are you sure you want to continue? [y/N] y
Deleted Networks:
mynet3
mynet1
mynet2
[root@server1 ~]# mkdir /webdata  创建目录
[root@server1 ~]# docker run -d --name demo -v /webdata:/usr/share/nginx/html nginx  
  /usr/share/nginx/html 此路经是nginx容器的默认程序发布目录,-V 表示指定挂载路经, /webdata:/usr/share/nginx/html  冒号前面是宿主机路经, 冒号后面是容器路经
[root@server1 webdata]# vim index.html  创建发布页面
www.westos.org 
[root@server1 webdata]# docker ps  
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
8ddf1f3fb99f        nginx               "/docker-entrypoint.…"   30 minutes ago      Up 30 minutes       80/tcp              demo      容器以运行
[root@server1 webdata]# 
[root@server1 webdata]# docker inspect 8ddf1f3fb99f    查看容器详细信息

在这里插入图片描述
在这里插入图片描述

[root@server1 webdata]# curl 172.17.0.2  访问容器
www.westos.org     可以看到nginx默认发布页面内容

[root@server1 webdata]# docker exec -it demo bash       docker exec  表示在容器中执行命令
root@8ddf1f3fb99f:/# 
root@8ddf1f3fb99f:/# cd /usr/share/nginx/html/  进入nginx默认发布目录里
root@8ddf1f3fb99f:/usr/share/nginx/html# ls
index.html   
root@8ddf1f3fb99f:/usr/share/nginx/html# cat index.html 
www.westos.org  可以发现这里面的内容就是刚才在宿主机写的内容

也可以将容器的配置文件挂载到容器里,从而进行修改配置文件
[root@server1 webdata]# docker rm -f demo  删除之前容器
demo
[root@server1 ~]# cd /webdata/
[root@server1 webdata]# mkdir conf 
[root@server1 webdata]# mkdir html
[root@server1 webdata]# ls
conf  html  index.html
[root@server1 webdata]# mv index.html html/  
[root@server1 webdata]# cd conf/  进入conf目录
[root@server1 conf]# vim www.conf  创建nginx虚拟主机
server {
    listen       80;
    server_name  www.westos.org;

    location / {
             root /html;    虚拟主机默认发布目录
             index index.html;
        }
}
[root@server1 ~]# docker run -d --name demo -v /webdata/html:/html -v /webdata/conf/www.conf:/etc/nginx/conf.d/www.conf:ro -p 80:80 nginx 
-v /webdata/html:/html   冒号后面/html是我们设置的虚拟主机默认发布目录         
www.conf:ro   ro是权限,只读
[root@server1 ~]# docker ps  查看
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
c22949c67c4a        nginx               "/docker-entrypoint.…"   2 minutes ago       Up 2 minutes        80/tcp              demo  容器已经运行
[root@server1 ~]# vim /etc/hosts  在宿主机上添加解析
172.25.50.1   server1  reg.westos.org  www.westos.org
[root@server1 ~]# curl www.westos.org    访问宿主机的80,通过端口映射定向到容器的80
www.westos.org    
[root@server1 ~]# cd /webdata/html/  进入宿主机html目录
[root@server1 html]# vim index.html    修改文件
www.westos.org
www.westos.org
www.westos.org
www.westos.org
[root@server1 html]# curl www.westos.org  访问,容器内的默认发布页面也发生的变化,因为宿主机和容器是相同的
www.westos.org
www.westos.org
www.westos.org
www.westos.org

3、docker 管理卷

在这里插入图片描述

docker managed 管理卷有固定位置,必须是此数据卷目录( /var/lib/docker/volumes) 挂接到容器内
[root@server1 volumes]# docker history registry  

在这里插入图片描述

[root@server1 volumes]# docker volume create vol1  创建vol1卷
vol1
[root@server1 volumes]# docker run -d --name registry -v vol1:/var/lib/registry  registry      此处也可以不用-V 去指定docker会自动创建数据源目录,
  var/lib/registry 此路经是registry默认挂载路经

在这里插入图片描述

[root@server1 ~]# docker rm -f registry   删除registry容器
registry
[root@server1 ~]# docker run -d --name nginx -v vol1:/usr/share/nginx/html  nginx  再次运行一个nginx容器,不用指定路经,直接写管理卷名字vol1
[root@server1 ~]# cd /var/lib/docker/volumes/
[root@server1 volumes]# ls
metadata.db  vol1
[root@server1 volumes]# cd vol1/
[root@server1 vol1]# ls
_data
[root@server1 vol1]# cd _data/
[root@server1 _data]# ls
50x.html  index.html      有数据,是因为宿主机挂接容器的目录里面有数据,他会拷贝到宿主机数据卷目录里
[root@server1 _data]# docker run -d --name nginx2 -v /web:/usr/share/nginx/html  nginx  再次运行一个容器,用mount方式挂载
[root@server1 ~]# cd /web 
[root@server1 web]# ls   数据为空,  此方式是以宿主机创建的数据卷目录里内容为主,覆盖此数据卷目录

在这里插入图片描述

4、卷插件简介

在这里插入图片描述

在这里插入图片描述
官方提供可选卷插件
卷插件作用:卷插件是用来跨主机存储的
本次实验选用Convoy plugin卷插件

4、1 Convoy 卷插件

[root@server1 ~]# mkdir /mnt/nfs
[root@server1 ~]# vim /etc/exports 

在这里插入图片描述

[root@server1 ~]# mkdir /mnt/nfs  创建nfs目录
[root@server1 ~]# vim /etc/exports 
/mnt/nfs             *(rw,no_root_squash)   共享/mnt/nfs目录 ,所有主机具有读写权限 ,no_root_squash表示超级用户挂载不要变更权限
[root@server1 ~]# chmod 777 /mnt/nfs/  给nfs目录所有权限
[root@server1 ~]# yum install nfs-utils  -y  安装nfs安装包
[root@server1 ~]# systemctl start nfs  启动nfs网络文件系统
 [root@server1 ~]#  showmount -e   显示共享目录列表
Export list for server1:
/mnt/nfs *
在server2上
[root@server2 ~]# mkdir /mnt/nfs
 [root@server2 ~]# yum install nfs-utils -y    安装nfs
[root@server2 ~]# mount 172.25.50.1:/mnt/nfs/ /mnt/nfs  将server1上的nfs目录挂载到server2的nfs目录上
 [root@server2 ~]# cd /mnt/nfs/  进入nfs共享目录
 [root@server2 nfs]# touch file  在nfs目录里创建文件
 [root@server1 ~]# cd /mnt/nfs/  
[root@server1 nfs]# ls   可以发现server1 上nfs目录也有file文件,是互通的
file
[root@server1 nfs]# rm -fr file  删除,server2nfs目录也没有了
[root@foundation50 isos]# cd /mnt/pub/docker/
[root@foundation50 docker]# scp convoy.tar.gz server1:  将下在好的convoy压缩包拷贝到server1上
[root@server1 ~]# tar zxf convoy.tar.gz   解压
[root@server2 ~]# cd convoy/
[root@server1 convoy]# ls
convoy  convoy-pdata_tools  SHA1SUMS
[root@server1 convoy]# mv convoy* /usr/local/bin/  将两个二进制程序放到/usr/local/bin/目录里,进行全局调用
[root@server1 ~]# mkdir -p /etc/docker/plugins   此路经为缺省的socket文件扫描路经,docker引擎自动会在此路经扫描插件
[root@server1 ~]# convoy daemon --drivers vfs --driver-opts vfs.path=/mnt/nfs &   启动服务
--drivers vfs   表示驱动   -driver-opts 驱动参数   vfs.path 表示指定共享目录
[root@server1 run]# cd convoy/
[root@server1 convoy]# ls
convoy.sock
[root@server1 convoy]# pwd
/var/run/convoy    此路经就是自己的sockt文件路经
[root@server1 convoy]# echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec    将sockt路经写入到刚才建立的/etc/docker/plugins/目录里convoy.spec文件中

在server2上进行同样操作
[root@foundation50 docker]# scp convoy.tar.gz server2:  
[root@server2 ~]# tar zxf convoy.tar.gz
[root@server2 ~]# tar zxf convoy.tar.gz  解压
[root@server2 ~]# cd convoy/
[root@server2 convoy]# mv convoy* /usr/local/bin/
[root@server2 ~]# mkdir -p /etc/docker/plugins
[root@server2 convoy]#  convoy daemon --drivers vfs --driver-opts vfs.path=/mnt/nfs &
[root@server2 convoy]# echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec 

测试:
[root@server1 convoy]# convoy --help  相关指令可以--help
[root@server1 convoy]# convoy create vol1  创建卷
[root@server1 convoy]# convoy list   列出卷
{
	"vol1": {
		"Name": "vol1",
		"Driver": "vfs",
		"MountPoint": "",
		"CreatedTime": "Sat Feb 26 22:39:01 +0800 2022",
		"DriverInfo": {
			"Driver": "vfs",
[root@server2 convoy]# convoy list     在server2上也可以列出刚才在server1上建立的卷
{
	"vol1": {
		"Name": "vol1",
		"Driver": "vfs",
		"MountPoint": "",
		"CreatedTime": "Sat Feb 26 22:39:01 +0800 2022",
		"DriverInfo": {
			"Driver": "vfs"
[root@server2 convoy]# convoy create vol2  也可以在server2上创建卷
[root@server1 convoy]# docker volume ls  查看卷信息

在这里插入图片描述

[root@server1 convoy]# docker volume rm vol1   删除
[root@server1 convoy]# docker volume rm -f 'docker ps -aq'  删除所有卷
[root@server1 convoy]# docker volume ls  查看卷信息

在这里插入图片描述

[root@server1 convoy]# docker run -d --name demo -v vol1:/usr/share/nginx/html nginx    
运行容器,使用管理卷挂载(管理卷不需要写路经,直接写卷名称vol1)
[root@server1 convoy]# docker ps   
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
cb45a25c749f        nginx               "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp              demo 容器已经运行
[root@server1 ~]# cd /mnt/nfs/
[root@server1 nfs]# ls
config  vol1  vol2
[root@server1 nfs]# cd vol1
[root@server1 vol1]# ls
50x.html  index.html    将容器里内容拷贝到创建的vol1卷里
[root@server1 vol1]# vim test.html  重新创建一个文件
[root@server1 vol1]# curl 172.17.0.2/test.html   访问,可以访问
demo

手动将server1上的demo容器迁移到server2上
[root@server1 vol1]# docker rm -f demo  删除server1上demo
[root@server2 convoy]# docker run -d --name demo -v vol1:/usr/share/nginx/html nginx  在sever2上运行与server1相同的指令创建demo,相当于迁移了
[root@server2 convoy]# curl 172.17.0.2/test.html 可以发现容器迁移到server2上,数据没有变,还在
demo

如何清除convoy?

[root@server2 convoy]# docker rm -f demo  删除容器
[root@server2 convoy]# docker volume rm vol1  删除卷
[root@server2 convoy]# convoy list  已经删除了
{}
[root@server1 vol1]# convoy list   已经删除了
{}
[root@server2 vol1]# fg  ,将此后台进程退出(ctrl+c)
convoy daemon --drivers vfs --driver-opts vfs.path=/mnt/nfs	(wd: ~)
^CCaught signal interrupt: shutting down.
DEBU[42977] Cleaning up environment...                    pkg=daemon
ERRO[42977] http server erroraccept unix /var/run/convoy/convoy.sock: use of closed network connection  pkg=daemon
[root@server2 vol1]# cd /etc/docker/
[root@server2 docker]# ls
certs.d  daemon.json  key.json  plugins
[root@server2 docker]# cd plugins/
[root@server2 plugins]# ls
convoy.spec
[root@server2 plugins]# rm -fr convoy.spec  删除此文件,不然会加载
[root@server2 plugins]# systemctl stop docker
[root@server2 plugins]# systemctl daemon-reload 
[root@server2 plugins]# systemctl start docker

注意:如果不正常删除,会导致缓存信
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 16:03:51  更:2022-02-28 16:06:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:29:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码