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镜像原理、容器数据卷(五)相关推荐

  1. 【Docker镜像原理容器数据卷】

    文章目录 Docker镜像原理-commit镜像 一.镜像讲解 二.docker镜像加载原理 UnionFS (联合文件系统): 三.docker镜像分层 四.commit镜像 总结: 容器数据卷 五 ...

  2. Docker镜像、容器数据卷和Dockerfile

    Docker镜像 概述 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. UnionFS ...

  3. Docker镜像原理及容器数据卷

    什么是docker镜像? docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资源.配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷.环境变量.用户等):镜像不包含任 ...

  4. Docker系列 五.Docker容器数据卷

    五.Docker容器数据卷 环境&工具: 阿里云轻量级服务器.CentOS 7系统.FinalShell(其他连接客户端也可以) 是什么 docker的理念将运行的环境打包形成容器运行,运行可 ...

  5. docker入门,镜像,容器,数据卷,dockerfile,docker网络,springboot微服务打包docker镜像[狂神yyds]

    docker学习大纲 docker概述 docker安装 docker命令 镜像命令 容器命令 操作命令 - docker镜像 容器数据卷 dockerfile docker网络原理 IDEA整合do ...

  6. docker 数据卷 mysql_Docker容器数据卷原理及使用方法解析

    什么是容器数据卷 如果数据都在容器中,一旦容器删除,数据就会丢失! eg : mysql容器删了,就是我们常说的删库跑路. 需求:数据可以持久化,即时删掉容器,我们的数据还在 容器直接可以有一个数据共 ...

  7. 【Docker学习笔记 五】深入理解Docker容器数据卷机制

    前几篇Blog是对Docker的一个入门和初识,本篇Blog开始就详细学习下一个新的理论基础概念:Volume,也就是容器数据卷,听起来名字高大上,实际上就是一个宿主机的目录而已,为什么需要容器数据卷 ...

  8. Docker基础讲解狂神笔记:容器数据卷,docker compose,docker swarm(2/2)未修订版欢迎留言补漏

    L06 容器数据卷 相对于01-05难度加大 什么是容器数据卷 Docker理念:将应用和环境打包成一个镜像! 程序要保存数据,数据并不能放在容器里面,因为一旦数据放在容器,误操作删除掉容器,数据也随 ...

  9. docker安装+配置镜像+命令操作+数据卷+网络管理+DockerFile+镜像服务+项目部署+[高级使用]

    文章目录 Docker基础 一.Docker介绍 1. 什么是虚拟化 2. 什么是Docker 3. 容器与虚拟机比较 4. Docker优势 5. Docker架构 [1]镜像服务(`Image`) ...

最新文章

  1. mysql replace into 使用过程中报错
  2. 浅析iOS中的触摸事件
  3. css怎么使元素绝对定位有过度效果_CSS定位属性Position实例分析
  4. linux 添加路由_在 Linux 上使用开源软件创建 SDN | Linux 中国
  5. Griddle, griddle-react 一个REACT 表格组件
  6. 树莓派从零开始学习记录
  7. 如何恢复电脑中的CHK文件?
  8. linux下bluetooth编程(一)基础概念
  9. RNA编辑基本形式与相关技术的研究现状(阅读小结)
  10. matlab中如何对一组复数频域信号进行快速傅里叶逆变换
  11. CSDN文章转PDF
  12. Linux使用tar命令进行磁带备份
  13. 基于 Impala 的高性能数仓实践之物化视图服务
  14. MyEclipse2017破解时 ACTIVATION_KEY为null
  15. Springboot进行qq邮箱验证
  16. 通过 BTC Relay 来实现链与链的连接
  17. GCP Compute Logging and Montioring, Lab
  18. 自用工具 Unity 小地图
  19. qml延迟代码_选择C而不是QML将您的代码减少80
  20. 关于NetKeeper(创翼)升级后,无法共享WIFI问题的解决-猎豹、360都可

热门文章

  1. 图片怎么转PDF文件格式?推荐这五个免费无损转换方法!
  2. repeat()方法的使用
  3. 计算机键盘上顿号在哪,电脑键盘上的顿号在哪个位置,最简单实用的电脑知识...
  4. QT 中用代码执行命令行清空Linux系统垃圾箱Trash
  5. arm汇编中mov、movs、movw、movl、movb解析
  6. Linux中通过vi打开文件只读文件如何保存
  7. 12 【网页布局总结 元素的显示与隐藏】
  8. Silverlight 入门知识(转至Microsoft)
  9. python 之禅_Python之禅
  10. python彩色字体显示