搜索
首页运维DockerDocker总结分享之数据卷技术

本篇文章给大家带来了Docker总结分享之数据卷技术的相关知识,希望对大家有帮助。

Docker总结分享之数据卷技术

Docker数据卷技术

Docker总结分享之数据卷技术

什么是容器数据卷

docker的理念回顾

将应和环境打包成一个镜像!

数据?如果数据都在容器中,那么我们容器删除,数据就会丢失!需求:数据可以持久化

MySQL,容器删了,删库跑路--->需求:MySQL数据可以存储在本地!

容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地!

这就是卷技术!目录的挂载,将我们容器内的目录,挂载到Linu×上面!

Docker总结分享之数据卷技术

总结:容器的持久化和同步操作!容器间也是可以实现数据共享的!

使用数据卷

docker run -it -v 宿主机目录: 容器目录 -p 主机端口:容器端口 容器id

实战演练

inspect查看同步详细信息

Docker总结分享之数据卷技术

在容器中创建一个文件,看是否同步到本地文件夹

Docker总结分享之数据卷技术

在关闭容器的情况下,对本地文件进行修改,看修改的是不是会同步到容器中文件

Docker总结分享之数据卷技术

Mysql实战

命令

docker run -d -p 3310:3306 -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

参数

-d 后台运行

-p 端口映射

-v 数据卷挂载:同步数据

-e  设置环境变量:这里时设置的时MySQL的登陆密码

--name  容器起名字

Docker总结分享之数据卷技术

测试结果:连接成功

Docker总结分享之数据卷技术

遇到的问题

首先使用的时mysql的最新版本:8.0----在使用navicat进行连接的时候,总是报莫名其妙的错误

解决方式:换成5.7版本,没有任何问题

在我们run镜像mysql的时候,没有加上-e MYSQL_ROOT_PASSWORD=123456进行密码的设置,容器一直会处于关闭状态,即使重新start也不会开启

加上-e MYSQL_ROOT_PASSWORD=123456这个参数完美开启

即使我们将容器删除,我们挂载到本地的数据卷依旧没有丢失,这就实现了容器数据的持久化功能

具名挂载和匿名挂载

匿名挂载

-v 容器内的路径!

docker run -d --name nginx01 -v /etc/nginx nginx

这里我们发现,这种就是匿名挂载,我们在-v的后面只是写上了容器内的路径,没有写容器外的路径

查看所有卷的情况

docker volume ls

Docker总结分享之数据卷技术

具名挂载

-v 挂载卷的名称:容器内的路径

docker run -d --name nginx01 -v 具名挂在名称:/etc/nginx nginx

这里我们发现,这种就是匿名挂载,我们在-v的后面既写上了容器内的路径,没有容器外的路径,但是有一个名称

Docker总结分享之数据卷技术

docker的内容目录:/var/lib/docker

所有的docker容器内的卷,没有指定目录的情况下都是在:/var/lib/docker/volume/xx/_data

我们可以通过具名挂载方便的找到我们的一个卷,并且在使用卷的时候最多的使用方式就是具名挂载

Docker总结分享之数据卷技术

额外知识

如何区分时具名挂载还是匿名挂载,指定路径挂载

-v 容器内路径    #匿名挂载

-v 卷名:容器内路径    #具名挂载

-v /容器外路径:容器内路径    #指定路径挂载

扩展

-v 容器内路径:ro rw 改变读写权限

ro  readonly  只读

rw  readwrite 可读可写

一旦设置了这个容器权限,容器对我们挂载出来的内容就有限定了

docker run -d --name nginx01 -v 具名挂在名称:/etc/nginx:ro nginx
docker run -d --name nginx01 -v 具名挂在名称:/etc/nginx:rw nginx

Ro 只要看到ro就说明这个路径只能通过宿主机来进行操作,容器内是无法操作的!

初识Dockerfile

dockerfile

dockerfile就是用来构建docker镜像文件的!命令脚本!先体验一下

通过这个脚本可以生成镜像,镜像是一层一层的,脚本是一个个的命令,每个命令都是一层!

写一个dockerfile

# 创立一个dockerfile文件,名字可以随便的取,最好叫做dockerfile
# 文件中的内容 指令(大写) 参数
FROM centos
VOLUME ["volme01","volume02"]
CMD echo "--------end----------"
CMD /bin/bash
#这里每个指令就是镜像的一层

使用dockerfile生成镜像

docker build -f dockerfile文件位置 -t 镜像名称和版本 镜像生成的位置

Docker总结分享之数据卷技术

进入镜像查看详情

Docker总结分享之数据卷技术

查看卷的同步目录

docker ps -a

docker inspect 容器id

Docker总结分享之数据卷技术

最后测试两个文件夹中是不是同步

同步成功

总结

使用dockerfile构建镜像的方式在我们未来的使用中非常的多,因为我们通常会构建自己的镜像

假设构建镜像时候没有挂载卷,要手动镜像挂载-v

数据卷容器

实际上即使保证的容器之间的数据共享的问题

Docker总结分享之数据卷技术

数据卷容器实际上就是被拷贝数据的容器(A- volumes-from ->B,B是数据卷容器)

测试两个镜像之间同步

首先先开三个容器

创建docker01

Docker总结分享之数据卷技术

创建docker02  --volumes-from docekr01

Docker总结分享之数据卷技术

创建docker03  --volumes-from docekr02

Docker总结分享之数据卷技术

查看docker01和docker03之间的数据共享

Docker总结分享之数据卷技术

接着我们将docker02删除,查看docker01和docker03之间的数据共享

Docker总结分享之数据卷技术

总结:

Docker总结分享之数据卷技术

实现多个mysql之间的数据共享

  docker run -d -p 3310:3306 -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
  docker run -d -p 3310:3306 --volumes-from mysql01 -e MYSQL_ROOT_PASSWORD=123456 --name 
  mysql02 mysql:5.7

总结:

容器之间配置信息的传递。数据卷容器的声明周期一直持续到没有容器使用位置

理解:容器之间只要是共享就会数据copy,即使有的容器被删除,数据依然存在,直到所有共享 的容器都删除,数据才会被彻底删除

但是一旦你持久化到了本地,这个时候,本地的数据是不会删除的。

推荐学习:《docker视频教程

以上是Docker总结分享之数据卷技术的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:掘金。如有侵权,请联系admin@php.cn删除
docker怎么删除none tagdocker怎么删除none tagApr 15, 2025 am 10:42 AM

可以通过手动删除未标记的镜像或使用Docker CLI插件批量删除None Tag。手动删除包括找出未标记的镜像,获取镜像ID,然后删除镜像。批量删除则可以使用命令docker images -f dangling=true -q | xargs docker rmi删除所有未标记的镜像。

docker集群怎么搭建docker集群怎么搭建Apr 15, 2025 am 10:39 AM

搭建 Docker 集群有两种主要方式:使用容器编排工具,如 Kubernetes 和 Docker Swarm,或使用第三方服务,如 Amazon ECS。使用容器编排工具搭建集群需要设置集群,安装 Docker 容器运行时,并部署应用程序;而使用第三方服务则只需创建帐户、创建集群和部署应用程序。

docker怎么用镜像docker怎么用镜像Apr 15, 2025 am 10:36 AM

Docker 镜像是打包应用程序代码和依赖项的可移植单元,可用于创建隔离的容器环境。要使用镜像,需要:获取镜像运行镜像(将创建一个容器)管理容器(例如启动、停止、重新启动)挂载卷(在容器和主机之间共享数据)设置端口映射(从主机访问容器应用程序)

docker怎么创建基础镜像docker怎么创建基础镜像Apr 15, 2025 am 10:33 AM

创建 Docker 基础镜像涉及以下步骤:创建基础文件系统,包括必要的文件和目录。安装所需的软件包。创建用户和组(可选)。设置工作目录(可选)。配置环境变量(可选)。提交镜像以保存您的更改。

docker的mysql怎么连接外部docker的mysql怎么连接外部Apr 15, 2025 am 10:30 AM

在 Docker 中,连接 MySQL 到外部数据库的方法如下:创建网络以连接容器。启动 MySQL 容器并指定网络名称。授予外部访问权限以允许连接。使用连接字符串连接到外部数据库。

怎么启动docker镜像怎么启动docker镜像Apr 15, 2025 am 10:27 AM

启动 Docker 镜像的步骤如下:拉取镜像:从注册表中获取镜像。创建容器:分配资源并创建基于镜像的容器。启动容器:启动容器中的进程。连接到容器:与容器交互并执行命令。

docker怎么注册docker怎么注册Apr 15, 2025 am 10:24 AM

注册 Docker 的方式:在 Docker Hub 上创建帐户。详细步骤如下:1. 访问 Docker Hub 网站。2. 点击“注册”按钮。3. 填写注册表并提交。4. 验证您的电子邮件。5. 创建用户名。注册 Docker 的好处包括:访问 Docker 镜像库、构建和共享镜像、管理团队和协作、使用自动化工具。

docker网络连接怎么停止docker网络连接怎么停止Apr 15, 2025 am 10:21 AM

要停止 Docker 网络连接,请按照以下步骤操作:1. 确定要停止的网络名称;2. 使用 docker network stop 命令停止网络;3. 检查停止状态,以验证网络已停止。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中