docker_4 数据卷技术
https://gitee.com/fakerlove/docker
文章目录
- 4. 数据卷技术
- 4.1 使用 -v 命令挂载目录:
- 4.2 实战:MySQL同步数据
- 4.3 具名和匿名挂载
- 匿名
- 具名
- 拓展
4. 数据卷技术
Docker04_使用数据卷技术实现容器内外和容器间的数据共享
4.1 使用 -v 命令挂载目录:
[root@izbp10tup89om84qulgxbsz home]# docker run -it -v /home/ceshi:/home centos /bin/bash
此时,容器内的 /home 目录就与主机的 /home/ceshi 目录实现了双向绑定。
即使容器被关闭或删除了,数据依然可以保留。
使用 docker inspect 容器id 命令可以查看到详细的目录挂载信息:
"Mounts": [{"Type": "bind","Source": "/home/ceshi","Destination": "/home","Mode": "","RW": true,"Propagation": "rprivate"}
]
4.2 实战:MySQL同步数据
#搜索镜像
[root@izbp10tup89om84qulgxbsz ceshi]# docker search mysql#下载镜像
[root@izbp10tup89om84qulgxbsz ceshi]# docker pull mysql:5.7# 查看是否下载成功
[root@izbp10tup89om84qulgxbsz ceshi]# docker images# 启动 mysql 镜像
-d 表示后台运行
-p 表示端口映射
-v 数据卷挂载
-e 环境配置
--name 容器名
[root@izbp10tup89om84qulgxbsz ceshi]# 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
Navicat 测试连接:
使用 Navicat 创建一个 test-blu 数据库:
进入主机的 /home/mysql/data 目录查看文件,发现多了一个名为 test@002dblu 的目录:
[root@izbp10tup89om84qulgxbsz data]# ls
auto.cnf client-key.pem ib_logfile1 private_key.pem sys
ca-key.pem ib_buffer_pool ibtmp1 public_key.pem test@002dblu
ca.pem ibdata1 mysql server-cert.pem
client-cert.pem ib_logfile0 performance_schema server-key.pem
12345
# 删除 mysql01 容器
[root@izbp10tup89om84qulgxbsz data]# docker rm -f mysql01# 查看是否删除成功
[root@izbp10tup89om84qulgxbsz data]# docker ps -a# 查看主机的 /home/mysql/data 目录,发现文件仍然存在
[root@izbp10tup89om84qulgxbsz data]# ls
auto.cnf client-key.pem ib_logfile1 private_key.pem sys
ca-key.pem ib_buffer_pool ibtmp1 public_key.pem test@002dblu
ca.pem ibdata1 mysql server-cert.pem
client-cert.pem ib_logfile0 performance_schema server-key.pem
具名挂载 和 匿名挂载
指定路径挂载 -v 主机目录:容器目录
具名挂载 -v 卷名:容器目录
匿名挂载 -v 容器目录
匿名挂载 nginx 示例(不推荐):
# 匿名挂载启动 nginx
-P 表示随机端口映射
[root@izbp10tup89om84qulgxbsz home]# docker run -d -P --name nginx01 -v /etc/nginx nginx# 查看所有的 volume
[root@izbp10tup89om84qulgxbsz home]# docker volume ls
DRIVER VOLUME NAME
local f05023335d743c9fc194ada48cabd0f58b8981416017dcc83db0ad3ef0e2225b
local fe42203caa62c5e66586f9476b32c7ff58f733b050bfb054c475906c106e4b65# 查看指定的 volume 信息
[root@izbp10tup89om84qulgxbsz home]# docker volume inspect f05023335d743c9fc194ada48cabd0f58b8981416017dcc83db0ad3ef0e2225b
[{"CreatedAt": "2020-11-11T21:36:18+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/f05023335d743c9fc194ada48cabd0f58b8981416017dcc83db0ad3ef0e2225b/_data","Name": "f05023335d743c9fc194ada48cabd0f58b8981416017dcc83db0ad3ef0e2225b","Options": null,"Scope": "local"}
]
[root@izbp10tup89om84qulgxbsz home]# docker volume inspect fe42203caa62c5e66586f9476b32c7ff58f733b050bfb054c475906c106e4b65
[{"CreatedAt": "2020-11-18T18:27:24+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/fe42203caa62c5e66586f9476b32c7ff58f733b050bfb054c475906c106e4b65/_data","Name": "fe42203caa62c5e66586f9476b32c7ff58f733b050bfb054c475906c106e4b65","Options": null,"Scope": "local"}
]
结论:所有 docker 容器内的卷,在没有指定主机目录的情况下,默认挂载的地址都是:
"/var/lib/docker/volumes/【volumn-name】/_data"
问题是匿名挂载的 volumn 的 名字都是一长串的随机字符,我们无法判断哪一个才是 nginx 容器挂载的地址,使用具名挂载可以解决这个问题。
具名挂载 nginx 示例(推荐):
# 具名挂载启动 nginx
[root@izbp10tup89om84qulgxbsz home]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx# 查看所有的 volume
[root@izbp10tup89om84qulgxbsz _data]# docker volume ls
DRIVER VOLUME NAME
local f05023335d743c9fc194ada48cabd0f58b8981416017dcc83db0ad3ef0e2225b
local fe42203caa62c5e66586f9476b32c7ff58f733b050bfb054c475906c106e4b65
local juming-nginx# 查看指定的 volume 信息
[root@izbp10tup89om84qulgxbsz _data]# docker volume inspect juming-nginx
[{"CreatedAt": "2020-11-18T18:46:47+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data","Name": "juming-nginx","Options": null,"Scope": "local"}
]# 进入挂载目录查看文件,找到了 nginx 的配置文件!
[root@izbp10tup89om84qulgxbsz _data]# cd /var/lib/docker/volumes/juming-nginx/_data[root@izbp10tup89om84qulgxbsz _data]# ll
total 40
drwxr-xr-x 2 root root 4096 Nov 18 18:46 conf.d
-rw-r--r-- 1 root root 1007 Oct 27 23:09 fastcgi_params
-rw-r--r-- 1 root root 2837 Oct 27 23:09 koi-utf
-rw-r--r-- 1 root root 2223 Oct 27 23:09 koi-win
-rw-r--r-- 1 root root 5231 Oct 27 23:09 mime.types
lrwxrwxrwx 1 root root 22 Oct 27 23:25 modules -> /usr/lib/nginx/modules
-rw-r--r-- 1 root root 643 Oct 27 23:25 nginx.conf
-rw-r--r-- 1 root root 636 Oct 27 23:09 scgi_params
-rw-r--r-- 1 root root 664 Oct 27 23:09 uwsgi_params
-rw-r--r-- 1 root root 3610 Oct 27 23:09 win-utf
拓展:
默认rw挂载的目录可读可写,可以在容器内部对挂载的目录内的文件进行读写:
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx:rw设置读写权限为ro(readOnly)的挂载目录,不可以在容器内对该目录内的文件进行写操作:
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx:ro
4.3 具名和匿名挂载
匿名
docker run -d -P --name naginx-1 -v /ect/nagix nginx
不写路径,然后docker 自动生成路径进行挂载
具名
docker run -d -P --name nagix02 -v nagix_1:/ect/nagix nagix
写路径的,但是路径并不是绝对路径,而是卷名
查看卷名
docker volume inspect
拓展
docker run -d -P --name nagix02 -v nagix_1:/ect/nagix:ro nagix
ro readonly 只读,只能进行宿主机来改变
docker run -d -P --name nagix02 -v nagix_1:/ect/nagix:rw nagix
rw readwrite 可读可写
docker_4 数据卷技术相关推荐
- docker commit镜像以及数据卷技术
commit镜像 docker commit 提交容器成为一个新的副本# 命令和git类似 docker commit -m='提交的描述信息' -a='作者' 容器id 目标镜像名:[tag] 实战 ...
- 容器数据卷网络基本配置
容器和主机.容器与容器之间需要数据共享时可以使用数据卷技术解决 容器中管理数据的主要方式有两种:数据卷.数据卷容器 1 数据卷 1.1 数据卷特性 可在容器之间共享和重用 对数据卷的修改马上生效 对数 ...
- Docker容器数据卷讲解
概述 为什么Docker需要容器数据卷技术:如果没有数据卷技术,比如一个由mysql镜像创建运行的容器,产生的数据就会保存在容器中,数据的生命周期与容器的生命周期一致,如果删除了该容器,相应的数据也会 ...
- Docker容器的数据卷(volumes)
目录 1.容器数据卷技术解决什么问题 docker可将应用和环境打包成一个镜像.容器是镜像的实例化. 我们的数据如果都在容器中,一旦容器删除,数据就会丢失. 数据卷技术可将容器产生的数据同步到本地,容 ...
- docker的文件流处理_Docker数据卷Volume实现文件共享、数据迁移备份(三)--技术流ken...
前言 前面已经写了两篇关于docker的博文了,在工作中有关docker的基本操作已经基本讲解完了.相信现在大家已经能够熟练配置docker以及使用docker来创建镜像以及容器了.本篇博客将会讲解如 ...
- mysql挂载数据卷_docker卷挂载技术
卷技术,容器内部数据映射到宿主机上 一.直接使用命令来挂载 docker run -it -v /home/test:/home centos /bin/bash# 在主机上查看 docker运行容器 ...
- 容器虚拟化技术Docker(一)简介、安装、常见命令、数据卷、安装常规软件
容器虚拟化技术Docker(一)简介.安装.常见命令.数据卷.安装常规软件 1.Docker简介 1.简介 Docker的主要目标是"Build,Ship and Run Any App,A ...
- 网络数据面技术是如何内卷起来的
Unix/Linux内核协议栈的衰微,以及每年大量的行业工人输入,造成了网络数据面技术的内卷. 我经常和人一起讨论网络技术,各式各样的,也不仅限于技术,偶尔也吐槽下内卷,周末了总结下我的观点. 早在2 ...
- Docker容器技术 |镜像原理 |数据卷 |数据卷容器
文章目录 一.Docker镜像介绍 二.镜像的commit操作补充 三.Docker数据卷 数据卷的理念:持久化+数据共享 方式1:直接添加数据卷 方式2:使用DockerFile添加数据卷 四.Do ...
最新文章
- 李彦宏/王坚/王传福等上榜“中国工程院2019院士增选候选人”引争议,实至名归吗?...
- 适合于小团队产品迭代的APP测试流程
- Apache Shiro 使用手册(四)Realm 实现
- c++运算符重载中很多人易忘的小细节
- leetcode最大矩形 (动态规划 python)
- 谷歌guava_Google Guava –期货
- 使用MongoDB进行乐观锁定重试
- 【kubernetes系列之安装Dashboard】
- 刚来公司时我却做了一件最傻的事
- 无锁并发框架Disruptor学习入门
- Tomcat部分目录作用
- 华科计算机学院硕士武汉理工推免,武汉理工大学2021届保研率14.9%,主要保研本校、武大、华科...
- 我的第一个Python爬虫——谈心得
- 代价敏感学习初探 - 有偏损失函数设计
- ckeditor富文本解决文段首行缩进问题
- win7 iis php mysql_windows7和iis配置的php phpinfo()中没有mysql组件
- BODIPY493/503-alkyne/amine/azide/carboxylic acid/DBCO/hydrazide/maleimide/NHS /tetrazine氟化硼二吡咯衍生物
- CSDN2018博客之星评选——期待各位大佬的投票!哈哈
- HTML5表单:工具箱中的可靠工具
- 2022年劳务员-通用基础(劳务员)考试模拟100题及在线模拟考试
热门文章
- Docker容器kali镜像导出/导入
- Android 5.1长按电源键添加重启功能
- mediacodec编解码少帧问题
- python炒股日记_Python日记
- 如何选择云服务器与轻量应用服务器?谈谈自己的看法
- angelajs中ajax,Fabric.js Triangle angle属性用法及代码示例
- esp8266 米家_【保姆级教程】米家全屋智能家居避坑指南+新手必购单品推荐(2020版)_智能家居...
- MyBatis学习笔记01
- python百分号字符串_python--003--百分号字符串拼接、format
- 仿真软件测试基尔霍夫定律,基尔霍夫定律实验报告范文