首页
统计
关于
Search
1
Sealos3.0离线部署K8s集群
1,082 阅读
2
类的加载
741 阅读
3
Spring Cloud OAuth2.0
726 阅读
4
SpringBoot自动装配原理
691 阅读
5
集合不安全问题
584 阅读
笔记
Java
多线程
注解和反射
JVM
JUC
设计模式
Mybatis
Spring
SpringMVC
SpringBoot
MyBatis-Plus
Elastic Search
微服务
Dubbo
Zookeeper
SpringCloud
Nacos
Sentinel
数据库
MySQL
Oracle
PostgreSQL
Redis
MongoDB
工作流
Activiti7
Camunda
消息队列
RabbitMQ
前端
HTML5
CSS
CSS3
JavaScript
jQuery
Vue2
Vue3
Linux
容器
Docker
Kubernetes
Python
登录
Search
标签搜索
Java
CSS
mysql
RabbitMQ
JavaScript
Redis
JVM
Mybatis-Plus
Camunda
多线程
CSS3
Python
Spring Cloud
注解和反射
Activiti
工作流
SpringBoot
Mybatis
Spring
html5
蘇阿細
累计撰写
388
篇文章
累计收到
4
条评论
首页
栏目
笔记
Java
多线程
注解和反射
JVM
JUC
设计模式
Mybatis
Spring
SpringMVC
SpringBoot
MyBatis-Plus
Elastic Search
微服务
Dubbo
Zookeeper
SpringCloud
Nacos
Sentinel
数据库
MySQL
Oracle
PostgreSQL
Redis
MongoDB
工作流
Activiti7
Camunda
消息队列
RabbitMQ
前端
HTML5
CSS
CSS3
JavaScript
jQuery
Vue2
Vue3
Linux
容器
Docker
Kubernetes
Python
页面
统计
关于
搜索到
1
篇与
的结果
2021-03-23
容器数据卷
容器数据卷:将应用和环境打包成一个镜像目的:将容器中的目录,挂在的Linux本地(容器的持久化和同步操作、容器间数据共享)方式一:直接使用 -v 命令挂载docker run -it -v 主机目录:容器内目录 # 测试 [root@suaxi ~]# docker run -it -v /home/test:/home centos /bin/bash 从容器同步到主机:从主机同步到容器:(在容器停止后,主机修改了绑定路径下的文件,容器再次启动后,双向绑定依然生效)1.安装MySQl# 拉取镜像 [root@suaxi ~]# docker pull mysql # 官方文档命令 docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag # 启动(注意:docker启动mysql需使用-e命令配置密码) -d 后台运行 -p 端口映射 -v 数据卷挂载 -e 环境配置 --name 给容器起个别名 [root@suaxi ~]# docker run -d -p 8088:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql # 后续再使用navicat等工具连接docker中的mysql实际测试一下配置是否生效删除容器之后,同步到本地的数据依然存在,即实现数据的持久化。2.具名挂载、匿名挂载# 匿名挂载 -v 容器内的路径 -P 大写的P,随机映射端口 [root@suaxi ~]# docker run -d -P --name nginx01 -v /etc/nginx nginx # 具名挂载 -v 卷名:容器内路径 [root@suaxi ~]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx # 查看刚才挂载的卷 [root@suaxi ~]# docker volume inspect juming-nginx 所有docker容器内的卷,在没有指定目录的情况下都在 /var/lib/docker/volumes/xxx/通过具名挂载,可以方便的找到挂载的卷及相关数据、信息# 区分匿名/具名挂载、指定路径挂载 -v 容器内路径 # 匿名挂载 -v 卷名:容器内路径 # 具名挂载 -v /主机路径:容器内路径 # 指定路径挂载# 通过 -v 容器内路径:ro/rw 改变读写权限 ro read only # 只读 rw read/write # 可读可写 [root@suaxi ~]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx [root@suaxi ~]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx # ro 只能通过主机来操作,容器内只具有读的权限方式二:Dockerfile通过脚本生成镜像# 1.创建dockerfile文件 # 2.编写脚本,命令(都是大写)参数 FROM centos VOLUME ["volume01","volume02"] CMD echo "----create complete----" CMD /bin/bash启动并进入容器:脚本命令中挂载的目录是匿名挂载:测试挂载目录下的双向绑定是否成功:1.数据卷容器多个mysql同步数据图片来源:狂神说Java# 通过刚才的脚本依次启动3个容器 [root@suaxi docker-test-volume]# docker run -it --name docker01 b0bf8a6507a3 [root@suaxi docker-test-volume]# docker run -it --name docker02 --volumes-from docker01 b0bf8a6507a3 [root@suaxi docker-test-volume]# docker run -it --name docker03 --volumes-from docker01 b0bf8a6507a3 通过volumes实现容器间的数据共享注:即使删除父容器docker01,其他容器中的数据依然存在# 实现多个mysql间的数据同步 [root@suaxi ~]# docker run -d -p 8088:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql [root@suaxi ~]# docker run -d -p 8088:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql结论:容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止。
2021年03月23日
159 阅读
0 评论
0 点赞