首页 运维 Docker Docker总结分享之数据卷技术

Docker总结分享之数据卷技术

Jan 14, 2022 pm 06:44 PM
docker

本篇文章给大家带来了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

热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.如果您听不到任何人,如何修复音频
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

docker desktop怎么用 docker desktop怎么用 Apr 15, 2025 am 11:45 AM

如何使用 Docker Desktop?Docker Desktop 是一款工具,用于在本地机器上运行 Docker 容器。其使用步骤包括:1. 安装 Docker Desktop;2. 启动 Docker Desktop;3. 创建 Docker 镜像(使用 Dockerfile);4. 构建 Docker 镜像(使用 docker build);5. 运行 Docker 容器(使用 docker run)。

docker镜像源怎么换国内 docker镜像源怎么换国内 Apr 15, 2025 am 11:30 AM

可切换到国内镜像源,步骤如下:1. 编辑配置文件 /etc/docker/daemon.json,添加镜像源地址;2. 保存退出后,重启 Docker 服务 sudo systemctl restart docker,即可提升镜像下载速度和稳定性。

docker版本怎么看 docker版本怎么看 Apr 15, 2025 am 11:51 AM

要获取 Docker 版本,您可以执行以下步骤:运行 Docker 命令“docker --version”来查看客户端和服务器版本。对于 Mac 或 Windows,还可以通过 Docker Desktop GUI 的“版本”选项卡或“关于 Docker Desktop”菜单查看版本信息。

docker怎么创建镜像 docker怎么创建镜像 Apr 15, 2025 am 11:27 AM

创建 Docker 镜像步骤:编写包含构建指令的 Dockerfile。在终端中构建镜像,使用 docker build 命令。标记镜像,使用 docker tag 命令分配名称和标签。

docker lnmp怎么调用 docker lnmp怎么调用 Apr 15, 2025 am 11:15 AM

Docker LNMP 容器调用步骤:运行容器:docker run -d --name lnmp-container -p 80:80 -p 443:443 lnmp-stack获取容器 IP:docker inspect lnmp-container | grep IPAddress访问网站:http://<容器 IP>/index.phpSSH 访问:docker exec -it lnmp-container bash访问 MySQL:mysql -u roo

docker怎么更新镜像 docker怎么更新镜像 Apr 15, 2025 pm 12:03 PM

更新 Docker 镜像的步骤如下:拉取最新镜像标记新镜像为特定标签删除旧镜像(可选)重新启动容器(如果需要)

docker容器名称怎么查 docker容器名称怎么查 Apr 15, 2025 pm 12:21 PM

可以通过以下步骤查询 Docker 容器名称:列出所有容器(docker ps)。筛选容器列表(使用 grep 命令)。获取容器名称(位于 "NAMES" 列中)。

怎么运行docker命令 怎么运行docker命令 Apr 15, 2025 am 11:24 AM

如何运行 Docker 命令?安装 Docker并启动守护程序。常用 Docker 命令:docker images:显示镜像docker ps:显示容器docker run:运行容器docker stop:停止容器docker rm:删除容器使用 Docker 命令与容器交互:docker exec:执行命令docker attach:附加控制台docker logs:显示日志docker commit:提交更改为镜像停止 Docker 守护程序:sudo systemctl stop doc

See all articles