首页 > 其他分享 >docker数据卷的使用

docker数据卷的使用

时间:2022-10-20 21:47:19浏览次数:46  
标签:容器 docker1 使用 test home docker z9999 数据

在使用docker时,如果不挂载数据卷直接运行一个容器,在删除容器时会丢失所有新增或修改的数据,并且经常会遇到多个容器需要访问同一份数据的情况,所以我们在运行一个容器时需要挂载数据卷来达到数据共享和数据持久化的目的。

root@docker1:/home/z9999# docker volume --help                                             \\查看docker volume命令帮助

Usage: docker volume COMMAND

Manage volumes

Commands:
create Create a volume                                                                       \\创建一个新的数据卷
inspect Display detailed information on one or more volumes                                  \\显示数据卷的详细信息
ls List volumes                                                                              \\列出所有的数据卷
prune Remove all unused local volumes                                                        \\删除所有未使用的数据卷
rm Remove one or more volumes                                                                \\删除指定数据卷

Run 'docker volume COMMAND --help' for more information on a command.

root@docker1:/home/z9999# docker volume create test                                           \\创建一个名为test的数据卷
test

root@docker1:/home/z9999# docker volume ls                                                    \\打印已有数据卷
DRIVER VOLUME NAME
local test

root@docker1:/home/z9999# docker volume inspect test                                         \\查看test数据卷的信息
[
{
"CreatedAt": "2022-10-20T12:36:26Z",                                                         \\创建时间
"Driver": "local",                                                                           
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/test/_data",                                           \\该数据卷再系统中的位置
"Name": "test",
"Options": {},
"Scope": "local"
}
]

root@docker1:/home/z9999# docker run -it -d -v test:/tmp nginx                                 \\创建一个容器并挂载数据卷
ee4dd210ec4a49f0e4a15ceea93bac354620572a6e435810d4b066d501a7e6ff
root@docker1:/home/z9999# docker exec -it ee bash                                              \\进入容器并写一个文件到挂载数据卷的目录中
root@ee4dd210ec4a:/# echo $HOSTNAME > /tmp/test                                               
root@ee4dd210ec4a:/# cat /tmp/test
ee4dd210ec4a
root@ee4dd210ec4a:/#
exit                                                                                 \\退出容器
root@docker1:/home/z9999# cat /var/lib/docker/volumes/test/_data/test                 \\在系统中查看数据卷中的内容,发现刚才写的内容已经在里面了
ee4dd210ec4a

 

root@docker1:/home/z9999# docker rm -f ee                                          \\删除刚才挂载这个卷的容器
ee
root@docker1:/home/z9999# cat /var/lib/docker/volumes/test/_data/test               \\删除容器后刚才写入的数据并未丢失
ee4dd210ec4a

 

root@docker1:/home/z9999# docker run -it -d -v test:/tmp httpd                       \\重新运行一个容器并挂载test数据卷
f31500655226b1b77b175bad1dfd3f9cf87b517173f1177c1325121090ed768d
root@docker1:/home/z9999# docker exec -it f3 bash
root@f31500655226:/usr/local/apache2# cat /tmp/test                                   \\到挂载点查看刚才写入的文件
ee4dd210ec4a

由此可见删除容器不会对写入到数据卷中的数据有任何影响,并且仍然可以挂载到其他容器

以数据卷的方式,将自定义的宿主机目录或文件提供给容器使用,比如容器可以直接挂载宿主机本地的数据目录(如mysql容器的数据持久化)、 配置文件(如nginx的配置文件)、静态文件(如web服务的图片或js文件)等,只需要在创建容器的时候指定挂载即可。

root@docker1:/home/z9999# echo "testapp web page" > /data/testapp/index.html                            
root@docker1:/home/z9999# cat /data/testapp/index.html
testapp web page
root@docker1:/home/z9999# docker run -d --name web1 -v /data/testapp:/usr/share/nginx/html/testapp -p 80:80 nginx      
45168a44de5bdd52cd76cf42a5924230feb9189a28599bef6c6e9012816356a0
root@docker1:/home/z9999# docker run -d --name web2 -v /data/testapp:/usr/share/nginx/html/testapp -p 81:80 nginx      
6e17be9c8e59b428f0f2e06f46c3f3013ebd5c447613664dcba12bf298b6d538

\\把写好的html文件挂载到两个nginx容器存放页面的目录,并将容器的端口分别映射到本地不同的端口

 

root@docker1:/home/z9999# docker ps -aq | xargs docker rm -f    \\强制删除刚才测试用的容器
6e17be9c8e59
45168a44de5b
d36a2a7b4f7f
f31500655226
root@docker1:/home/z9999# docker volume prune \\删除容器后可以使用“docker volume prune”删除未在使用的额容器(生产环境请谨慎操作!个人认为docker rm DOCKERNAME风险更低)
WARNING! This will remove all local volumes not used by at least one container. Are you sure you want to continue? [y/N] y Deleted Volumes: test Total reclaimed space: 13B

 

标签:容器,docker1,使用,test,home,docker,z9999,数据
From: https://www.cnblogs.com/z9999/p/16811386.html

相关文章

  • 微信小程序防止事件冒泡(catchtab的使用)
    使用catchtab,在里层可以避免出现事件冒泡     toDetail(){console.log('1')},toDetail2(){console.log('2')},toDetail3(){......
  • 【工具使用】docker(九)docker-compose简介
    定义:用于定义和运行多容器的docker应用程序的工具,通过compose,可以使用yaml文件来配置应用程序的服务。compose的使用一般分3步1、使用dockerfile定义顶用程序的环境......
  • 使用Flask作为项目后端中使用蓝图通过 dotenv 设置环境变量实现需求
    创建蓝图蓝图是一种组织一组相关视图和其他代码的方法。与直接向应用程序注册视图和其他代码的方法不同,蓝图方法是将它们注册到蓝图,然后在工厂函数中将蓝图注册到应用程序......
  • Git使用
    Git概述Git是一个免费的,开源,分布式版本控制系统。Git易于学习,占地小,性能快。性能优于Subversion,CVS等版本控制工具。Git最突出的特性是分支特性。版本控制:版本控制是......
  • python 图形的数据处理 (折线图为例)
    1.通过json模块对数据进行处理ab173.com是懒人工具-json在线解析,可以通过他对json数据进行格式化的分析。"""演示可视化需求1:折线图开发"""importjsonfrompyec......
  • 软工大数据期中测试
    Result文件数据说明:Ip:106.39.41.166,(城市)Date:10/Nov/2016:00:01:02+0800,(日期)Day:10,(天数)Traffic:54,(流量)Type:video,(类型:视频video或文章article)Id:8701(视频或......
  • 十年磨一剑,华为云数据灾备解决方案为你解决后顾之忧
    随着时代的不断发展,我们进入了一个全新的网络时代,各种各样的数据呈现出爆炸增加的态势,企业在头疼数据存储的同时也在担忧自身数据损害和丢失的问题。为了保障企业数据不丢......
  • 及时恢复,华为云灾备数据解决方案让你无忧办公
    一个企业的成立可能需要大笔的资金和人员,但一个企业的稳定和发展一定离不开数据的支持,这是公司最重要的软实力,只有保障好自身公司的数据信息才能够更好地保障公司的稳定,如......
  • 吐血整理python数据分析利器pandas的八个生命周期!
    这里从八个pandas的数据处理生命周期,整理汇总出pandas框架在整个数据处理过程中都是如何处理数据的。【阅读全文】也就是从pandas的数据表对象以及数据汇总、数据统计等......
  • Hyperf使用ElasticSearch记录
    Hyperf安装Elasticsearch协程客户端hyperf/elasticsearch主要为elasticsearch-php进行了客户端对象创建的工厂类封装,elasticsearch-php默认使用GuzzleRing客户......