docker之数据卷管理
目录
1.docker使用
2.优化
在docker之网络访问中,通过启动了nginx服务进行了访问,只展示了nginx的首页信息,如果想访问我们自己的代码如何操作呢,这就需要使用到数据卷的知识了。在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中。数据卷的管理可以参考:Docker数据卷管理
1.docker使用
这里通过一个小程序来看看,通过xiaoniaoniaofeifei来看看如何实现数据卷的使用。如果是本地的压缩文件使用xshell可以直接拖动到xshell中进行上传,上传完成之后进行解压。
xiaoniaofeifei软件包下载链接,提取码: jyqy
[root@localhost srv]# ls
xiaoniaofeifei.zip
[root@localhost srv]# unzip xiaoniaofeifei.zip
Archive: xiaoniaofeifei.zipinflating: sound1.mp3 creating: img/inflating: img/bg1.jpg inflating: img/bg2.jpg inflating: img/number1.png inflating: img/number2.png inflating: img/s1.png inflating: img/s2.png inflating: 21.js inflating: 2000.png inflating: icon.png inflating: index.html
[root@localhost srv]# ls
2000.png 21.js icon.png img index.html sound1.mp3 xiaoniaofeifei.zip
将整个目录下的所有信息拷贝至容器中去。先查看一下容器的id
[root@localhost srv]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
738b4313c4f7 nginx:latest "/docker-entrypoint.…" About an hour ago Up About an hour 192.168.0.101:49154->80/tcp pensive_chaplygin
3a885ede5267 nginx:latest "/docker-entrypoint.…" About an hour ago Up About an hour 192.168.0.101:49153->80/tcp distracted_antonelli
c2c9273e9484 nginx:latest "/docker-entrypoint.…" 2 hours ago Up 2 hours 0.0.0.0:81->80/tcp, :::81->80/tcp mystifying_feistel
6ee5b735e752 nginx:latest "/docker-entrypoint.…" 2 hours ago Up 2 hours 192.168.0.101:80->80/tcp frosty_beaver
e2e1a5cbc833 nginx:latest "/docker-entrypoint.…" 2 hours ago Up 2 hours 192.168.0.100:80->80/tcp jovial_raman
[root@localhost srv]# docker rm -f `docker ps -a -q` 容器太多了删除一下
738b4313c4f7
3a885ede5267
c2c9273e9484
6ee5b735e752
e2e1a5cbc833
接着重新创建一个新的容器
[root@localhost srv]# docker run -d -p 80:80 nginx:latest
e7d08547b7f70eeb16239c73dd5ac572d92a05b6273b13d55f1f5ffe55ec9a81
[root@localhost srv]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e7d08547b7f7 nginx:latest "/docker-entrypoint.…" 21 seconds ago Up 8 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp kind_haslett
将解压的文件拷贝至如下目录,使用cp命令进行拷贝拷贝至容器的目录下,这里的e7d085**f7为容器的id,接着进入该容器,使用exec
[root@localhost srv]# docker container cp . e7d08547b7f7:/usr/share/nginx/html
[root@localhost srv]# docker exec -it e7d08547b7f7 /bin/bash
root@e7d08547b7f7:/# cd /usr/share/nginx/html/
root@e7d08547b7f7:/usr/share/nginx/html# ls
2000.png 21.js 50x.html icon.png img index.html sound1.mp3 xiaoniaofeifei.zip
root@e7d08547b7f7:/usr/share/nginx/html#
接着访问一下192.168.0.101,这里的ip是宿主机的ip
2.优化
使用过程中发现有一个bug需要修复下,需要修改下index.html
root@e7d08547b7f7:/usr/share/nginx/html# ls
2000.png 21.js 50x.html icon.png img index.html sound1.mp3 xiaoniaofeifei.zip
root@e7d08547b7f7:/usr/share/nginx/html# vi index.html
bash: vi: command not found
发现没有vi命令,这时可以现场装一个vi,但是太麻烦了。因此这里代码尽量不要使用cp命令放进去,退出到src目录,使用exit退出当前容器。调试的时候尽量放置在宿主机上,这样一边修改一边调试。
[root@localhost srv]# docker run -d -p 81:80 -v /srv:/usr/share/nginx/html nginx:latest
-v --volumn
/srv 宿主机目录
/usr/share/nginx/html 容器目录
再次进入到Ip:port中进行访问,注意这里需要刷新一下,f5普通刷新,shift+f5强制刷新。
使用者这种-v的好处就是,如果遇到bug就可以直接在宿主机上直接修改。比如现在有个标题
[root@localhost srv]# ls
2000.png 21.js icon.png img index.html sound1.mp3 xiaoniaofeifei.zip
[root@localhost srv]# vi index.html
在刷新,发现标题已经修改。使用docker volume 查询volume命令,使用ls查询当前有无卷
[root@localhost srv]# docker volume ls
DRIVER VOLUME NAME
[root@localhost srv]#
[root@localhost _data]# docker run -d -p 82:80 -v teset:/usr/share/nginx/html nginx:latest
5d5d541f2394ff2a6975e31333f99014db8cf7f6c6c0a257d8bfd048d3b192e9
使用test,发现没有会自动创建一个卷
[root@localhost srv]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2f069022da24 nginx:latest "/docker-entrypoint.…" 52 seconds ago Up 6 seconds 80/tcp, 0.0.0.0:49153->82/tcp, :::49153->82/tcp pedantic_yalow
ea037ed65357 nginx:latest "/docker-entrypoint.…" 11 minutes ago Up 11 minutes 0.0.0.0:81->80/tcp, :::81->80/tcp beautiful_haibt
e7d08547b7f7 nginx:latest "/docker-entrypoint.…" 6 hours ago Up 6 hours 0.0.0.0:80->80/tcp, :::80->80/tcp kind_haslett
[root@localhost srv]# docker volume ls
DRIVER VOLUME NAME
local teset
那这个卷有什么好处呢?
[root@localhost srv]# docker volume inspect teset
[{"CreatedAt": "2021-05-05T14:50:10+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/teset/_data","Name": "teset","Options": null,"Scope": "local"}
]
切换对应的挂载目录
[root@localhost _data]# ls
50x.html index.html
访问一下首页
[root@localhost _data]# rm -fr *[root@localhost _data]# cp /srv/* .
再次刷新,就可以访问。
[root@localhost _data]# docker run -d -p 83:80 -v teset:/usr/share/nginx/html nginx:latest
1e98cb4a3c77a7f5201bfe10fd20a36ced68225e7608121bbbfbbabffb13a1e9
再次启动一个83的容器,这样就实现了数据共享。
docker之数据卷管理相关推荐
- docker入门实践之数据卷管理
在实际使用docker过程中,有时需要查看容器内应用产生的数据,或需要把容器内的数据进行备份,甚至是多个容器间需要共享数据,这势必涉及到数据管理,那么docker的数据怎么管理呢? 容器中数据管理主要 ...
- Docker(七)--Docker数据卷管理及插件
一.Docker 数据卷管理 在实际使用过程中,我们需要把容器和数据进行隔离,因为容器在使用过程中可能随时要进行销毁,但是数据要保留下来,所以我们要做数据的持久化. 为什么要用数据卷 docker分层 ...
- docker常用命令 | game2048网页游戏 | nginx镜像 | 数据卷管理 | docker网络管理 | 构建apache镜像 | Dockerfile常用的命令
DOCKER https://www.docker.com http://www.runoob.com/docker/docker-command-manual.html docker命令大全 镜像用 ...
- Volumes 数据卷管理
文章目录 4. Volumes 数据卷管理 4.1 Volumes 数据卷的优势 4.2 Volumes 数据卷使用 4.2.1.创建并管理数据卷 1. 创建数据卷 2. 查看数据卷 3. 核查数据卷 ...
- Docker——Docker 容器数据卷(Volumes)
Docker 容器数据卷 容器数据卷(Volumes) 容器数据卷概述 使用数据卷 实现mysql数据同步 具名挂载和匿名挂载 匿名挂载 具名挂载 DockerFile里写Volumes配置 多个数据 ...
- Docker----(七)数据卷管理
Docker数据卷管理 1 Docker数据卷管理 1.1 为什么要用数据卷 1.2 bind mount 1.3 docker managed volume 2 卷插件简介 2.1 nfs的配置 2 ...
- Docker系列 五.Docker容器数据卷
五.Docker容器数据卷 环境&工具: 阿里云轻量级服务器.CentOS 7系统.FinalShell(其他连接客户端也可以) 是什么 docker的理念将运行的环境打包形成容器运行,运行可 ...
- docker基础---数据卷volumes
1.数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新,不会影响镜像 卷会一直存在 ...
- Docker容器数据卷讲解
概述 为什么Docker需要容器数据卷技术:如果没有数据卷技术,比如一个由mysql镜像创建运行的容器,产生的数据就会保存在容器中,数据的生命周期与容器的生命周期一致,如果删除了该容器,相应的数据也会 ...
最新文章
- 论坛答疑SQL(二)
- ArcGIS网络分析之构建网络分析数据集(一)
- python 将YOLO(txt)格式的标注数据批量转换为PascalVOC(XML)格式的标注数据
- php替换不区分大小写_PHP大小写问题:函数名和类名不区分,变量名区分
- 如何PHP给人生日祝福,祝福偶像生日的句子 祝好朋友生日快乐说说
- Asp.net中web.config配置文件详解
- android 画中画模式自定义,Android 8.0 Oreo 画中画模式
- 产品沉思录 V3.0 试读
- SOPC Builder failed to refresh PTF file
- leetcode347——前K个高频元素——java实现
- 【Git】rebase 用法小结
- 大数据技术架构_独家解读!阿里首次披露自研飞天大数据平台技术架构
- revo加密_使用Revo Uninstaller完全卸载程序以及更多其他功能
- 与10.110.12.29mask255.255.255.224属于同一网段的主机ip地址是
- imooc《Python入门与实战》学习总结(七)Python中的面向对象
- 公司常用协同管理软件介绍
- 恶搞 GitHub 贡献图
- 和菜头:放开那些员工
- win10中ensp路由器启动失败的解决办法
- 数据数据泄露泄露_通过超参数调整进行数据泄漏