docke镜像原理、容器数据卷(五)
Docker镜像加载原理
UnionFs(联合文件系统)
是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加。
docker镜像原理
docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。
镜像是什么
镜像是一种轻量级、可执行的独立软件包,用于打包软件运行环境和基于运行环境开发的软件。
commit镜像
Docker commit 提交一个容器成为一个新的副本
# 命令和git原理类似
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[tag]
容器数据卷
什么是容器数据卷?
docker的理念:将应用和环境打包成一个镜像。
数据?如果数据都存在容器中,那么我们容器删除,数据就会丢失!== 需求:数据可以持久化 ==
将容器内的目录挂载到linux上面。卷技术。
为什么使用容器数据卷:为了容器的持久化和同步操作,容器间也是可以数据共享的。
使用数据卷
方式一: 直接使用命令来挂载 -v
# docker run -it -v 主机目录:容器内目录
[root@localhost ~]# docker run -it -v /home/ceshi:/home centos /bin/bash
[root@94dca5cec883 /]# # 查看是否挂载这成功
docker inspect 容器id
实战:安装mysql
mysql的数据持久化问题
# 获取镜像
[root@localhost ~]# docker pull mysql:5.7
# 运行容器,需要做数据挂载 # 安装数据需要配置密码
# 官方测试docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag# 启动mysql,挂载目录
-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置
--name 容器命名
[root@localhost ~]# docker run -d -p 3306: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
b2d42bf99c9f1081fccad171cf869d422eb6961445c7e66ec55f3610e3f0736d
[root@localhost ~]# # 启动成功之后,使用本地工具连接mysql进行测试。
具名和匿名挂载
# 匿名挂载:-v 容器内路径!
-P 随机端口指定
docker run -d -P --name nginx01 -v /etc/nginx nginx
# 查看所有的volume的情况
[root@localhost ~]# docker volume ls
# 这里发现是匿名挂载,我们在-v匿名挂载:只写容器的内路径,没有写容器外的路径# 具名挂载 :通过-V -卷名:容器内路径
[root@localhost ~]# docker run -d -P --name nginx02 -v xiaoming:/etc/nginx nginx
5217f8ad5dc50563de9db4ca10f220a0faa60eca40c63cddb5acac1f50b927c7
[root@localhost ~]# docker volume ls
DRIVER VOLUME NAME
local 2f0f08e1f745bb527a45fdc2ab27def1de12edbb461ba164e407b1615a53b97c
local 3f5ecf577201255a39fe3e772a17ffbb1bd02ba9a7d4ccbc71ff9822c1f52234
local xiaoming# 没有指定目录的情况下都在:/var/lib/docker/
通过具名挂载可以方便的找到我们的一个卷,大多数
[root@localhost ~]# docker volume inspect xiaoming
[{"CreatedAt": "2021-08-22T14:02:00-04:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/xiaoming/_data","Name": "xiaoming","Options": null,"Scope": "local"}
]
# 匿名和具名挂载的区别
-v 容器内路径 # 匿名挂载
-v 卷名:容器内路径 # 具名挂载
-v /宿主机路径:/容器内路径 # 指定路径挂载
拓展:
# 通过-v 容器内路径,ro rw改变读写权限
ro readonly # 只读
rw readwrite # 可读可写
# 一旦这个设置容器的权限,容器对我们挂载出来的内容就有限制了。
docker run -d -P --name nginx03 -v xiaoming:/etc/nginx:ro nginx
docker run -d -P --name nginx03 -v xiaoming:/etc/nginx:rw nginx
# ro 说明只能通过宿主机来操作,容器内部是无法操作的
DockerFile
方式一
DockerFile就是构建docker镜像的构建文件
通过脚本可以生产脚本
# 创建一个dockerfile文件,名字可以随机
# 文件中的内容指令(大写)参数FROM centosVOLUME ["volume01","volume02"]CMD echo "----end----"
CMD /bin/bash
# 这里的每个命令,都是镜像的一层!# 启动自己的生成的容器
[root@localhost docker-test-volume]# docker run -it 8a94d73b9137(随机生成的容器id) /bin/bash
[root@1b6d30fa048d /]# ls
bin etc lib lost+found mnt proc run srv tmp var volume02
dev home lib64 media opt root sbin sys usr volume01
# 查看卷挂在的路径
docker inspect 容器ID # mount关键字
数据卷容器
多个mysql同步数据
# --volumes-from 通过这个命令可以实现数据共享
docker run -it --name docker02 --volumes-from docker01 xiaoming/centos:1.0
多个mysql实现数据共享
容器直接配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止。
docke镜像原理、容器数据卷(五)相关推荐
- 【Docker镜像原理容器数据卷】
文章目录 Docker镜像原理-commit镜像 一.镜像讲解 二.docker镜像加载原理 UnionFS (联合文件系统): 三.docker镜像分层 四.commit镜像 总结: 容器数据卷 五 ...
- Docker镜像、容器数据卷和Dockerfile
Docker镜像 概述 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. UnionFS ...
- Docker镜像原理及容器数据卷
什么是docker镜像? docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资源.配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷.环境变量.用户等):镜像不包含任 ...
- Docker系列 五.Docker容器数据卷
五.Docker容器数据卷 环境&工具: 阿里云轻量级服务器.CentOS 7系统.FinalShell(其他连接客户端也可以) 是什么 docker的理念将运行的环境打包形成容器运行,运行可 ...
- docker入门,镜像,容器,数据卷,dockerfile,docker网络,springboot微服务打包docker镜像[狂神yyds]
docker学习大纲 docker概述 docker安装 docker命令 镜像命令 容器命令 操作命令 - docker镜像 容器数据卷 dockerfile docker网络原理 IDEA整合do ...
- docker 数据卷 mysql_Docker容器数据卷原理及使用方法解析
什么是容器数据卷 如果数据都在容器中,一旦容器删除,数据就会丢失! eg : mysql容器删了,就是我们常说的删库跑路. 需求:数据可以持久化,即时删掉容器,我们的数据还在 容器直接可以有一个数据共 ...
- 【Docker学习笔记 五】深入理解Docker容器数据卷机制
前几篇Blog是对Docker的一个入门和初识,本篇Blog开始就详细学习下一个新的理论基础概念:Volume,也就是容器数据卷,听起来名字高大上,实际上就是一个宿主机的目录而已,为什么需要容器数据卷 ...
- Docker基础讲解狂神笔记:容器数据卷,docker compose,docker swarm(2/2)未修订版欢迎留言补漏
L06 容器数据卷 相对于01-05难度加大 什么是容器数据卷 Docker理念:将应用和环境打包成一个镜像! 程序要保存数据,数据并不能放在容器里面,因为一旦数据放在容器,误操作删除掉容器,数据也随 ...
- docker安装+配置镜像+命令操作+数据卷+网络管理+DockerFile+镜像服务+项目部署+[高级使用]
文章目录 Docker基础 一.Docker介绍 1. 什么是虚拟化 2. 什么是Docker 3. 容器与虚拟机比较 4. Docker优势 5. Docker架构 [1]镜像服务(`Image`) ...
最新文章
- mysql replace into 使用过程中报错
- 浅析iOS中的触摸事件
- css怎么使元素绝对定位有过度效果_CSS定位属性Position实例分析
- linux 添加路由_在 Linux 上使用开源软件创建 SDN | Linux 中国
- Griddle, griddle-react 一个REACT 表格组件
- 树莓派从零开始学习记录
- 如何恢复电脑中的CHK文件?
- linux下bluetooth编程(一)基础概念
- RNA编辑基本形式与相关技术的研究现状(阅读小结)
- matlab中如何对一组复数频域信号进行快速傅里叶逆变换
- CSDN文章转PDF
- Linux使用tar命令进行磁带备份
- 基于 Impala 的高性能数仓实践之物化视图服务
- MyEclipse2017破解时 ACTIVATION_KEY为null
- Springboot进行qq邮箱验证
- 通过 BTC Relay 来实现链与链的连接
- GCP Compute Logging and Montioring, Lab
- 自用工具 Unity 小地图
- qml延迟代码_选择C而不是QML将您的代码减少80
- 关于NetKeeper(创翼)升级后,无法共享WIFI问题的解决-猎豹、360都可