Docker容器数据卷

容器数据卷

使用数据卷

方式一: 直接使用命令挂载 -v

docker run -it -v  主机目录:容器内目录
#测试
[root@Graht home]# docker run -it -v /home/ceshi:/home centos /bin/bash
#启动起来之后可以通过 docker inspect 容器id 查看详细信息 [里面有挂载信息] :
"Mounts": [
            {
                "Type": "bind",
                "Source": "/home/ceshi", 主机内地址
                "Destination": "/home",  容器内地址
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ] 
#可以在容器中创建一个文件到主机地址看看是否存在 【双向绑定】

#好处 以后修改某些容器中的配置文件就可以在服务器上完成不需要进入容器
#测试MySQL数据同步
[root@Graht home]# docker pull mysql:5.7 下载MySQL5.7镜像
#在运行容器的时候需要做数据挂载 
-d 后台运行
-p 端口映射
-v 数据卷挂载  可以挂载多个
-e 环境配置 
--name 容器名字
[root@Graht home]# docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
#启动成功之后 我们在本地使用DataGrip远程连接服务器的3310
#3310和服务器的3306映射 就可以连接上了 
##测试 可以在DataGrip创建数据库 然后在服务器中的/home/data 就会生成一个新的文件
###假设我们将容器删除 在本地的数据卷依旧没有丢失 这就实现了容器数据持久化功能

具名和匿名挂载

#匿名挂载
[root@Graht data]# docker run -d --name nginx01 -P -v /etc/mginx nginx 
5923a22702c76769f019b36bd59abf47f5251c86c4ae8eaf69d51d727a71b025
[root@Graht data]# docker volume ls
DRIVER    VOLUME NAME
local     8038cded2858aab7c251a966f17fd0d4c9e7181d3f6907f575f9e830bfb05ca8
#在-v 之后我们不给出容器外路径 就是匿名挂载

#具名挂载 
[root@Graht data]# docker run -d --name nginx02 -P -v juming-nginx:/etc/nginx nginx
401e8a005dc767ca36b7fdb2b1e15240cf37983e6ed2d2ed938ffe4fd7481191
[root@Graht data]# docker volume ls
DRIVER    VOLUME NAME
local     juming-nginx
#通过 -v  卷名:容器内路径
#查看卷
[root@Graht data]# docker volume inspect juming-nginx
[
    {
        "CreatedAt": "2022-03-12T13:57:11+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data",
        #这个目录是没有指定目录情况下所有卷路径 /var/lib/docker/volumes/
        "Name": "juming-nginx",
        "Options": null,
        "Scope": "local"
    }
]
#通过具名挂载可以找到一个卷  大多数情况都是使用具名挂载

拓展:

#通过 -v 容器内路径:ro  rw 改变读写权限
ro read only 	#只读
rw read write	#可读可写

#一旦设置了容器权限 容器对挂载出来的内容就有限定了

# ro :说明这个路径只能通过宿主机来操作,容器内部是无法操作的

数据卷容器

#先使用刚刚建立好的镜像创建三个容器  
#第一个当作主容器
[root@Graht /]# docker run -it --name docker01  graht/centos
#第二个 --volumes-from 和哪个容器共享就写哪个容器名字  很显然docker01
[root@Graht /]# docker run -it --name docker02 --volumes-from docker01 graht/centos
#第三个  --volumes-from 和哪个容器共享就写哪个容器名字  很显然docker01
[root@Graht /]# docker run -it --name docker02 --volumes-from docker01 graht/centos

#在第一个容器中新建内容 在第二第三个容器中能看到 相反也行

##当删除了docker01这个容器 docker02 docker03都可以访问数据
说明了在数据卷容器中他们之间是一个拷贝的概念

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值