目录

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之数据卷管理相关推荐

  1. docker入门实践之数据卷管理

    在实际使用docker过程中,有时需要查看容器内应用产生的数据,或需要把容器内的数据进行备份,甚至是多个容器间需要共享数据,这势必涉及到数据管理,那么docker的数据怎么管理呢? 容器中数据管理主要 ...

  2. Docker(七)--Docker数据卷管理及插件

    一.Docker 数据卷管理 在实际使用过程中,我们需要把容器和数据进行隔离,因为容器在使用过程中可能随时要进行销毁,但是数据要保留下来,所以我们要做数据的持久化. 为什么要用数据卷 docker分层 ...

  3. docker常用命令 | game2048网页游戏 | nginx镜像 | 数据卷管理 | docker网络管理 | 构建apache镜像 | Dockerfile常用的命令

    DOCKER https://www.docker.com http://www.runoob.com/docker/docker-command-manual.html docker命令大全 镜像用 ...

  4. Volumes 数据卷管理

    文章目录 4. Volumes 数据卷管理 4.1 Volumes 数据卷的优势 4.2 Volumes 数据卷使用 4.2.1.创建并管理数据卷 1. 创建数据卷 2. 查看数据卷 3. 核查数据卷 ...

  5. Docker——Docker 容器数据卷(Volumes)

    Docker 容器数据卷 容器数据卷(Volumes) 容器数据卷概述 使用数据卷 实现mysql数据同步 具名挂载和匿名挂载 匿名挂载 具名挂载 DockerFile里写Volumes配置 多个数据 ...

  6. Docker----(七)数据卷管理

    Docker数据卷管理 1 Docker数据卷管理 1.1 为什么要用数据卷 1.2 bind mount 1.3 docker managed volume 2 卷插件简介 2.1 nfs的配置 2 ...

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

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

  8. docker基础---数据卷volumes

    1.数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新,不会影响镜像 卷会一直存在 ...

  9. Docker容器数据卷讲解

    概述 为什么Docker需要容器数据卷技术:如果没有数据卷技术,比如一个由mysql镜像创建运行的容器,产生的数据就会保存在容器中,数据的生命周期与容器的生命周期一致,如果删除了该容器,相应的数据也会 ...

最新文章

  1. 论坛答疑SQL(二)
  2. ArcGIS网络分析之构建网络分析数据集(一)
  3. python 将YOLO(txt)格式的标注数据批量转换为PascalVOC(XML)格式的标注数据
  4. php替换不区分大小写_PHP大小写问题:函数名和类名不区分,变量名区分
  5. 如何PHP给人生日祝福,祝福偶像生日的句子 祝好朋友生日快乐说说
  6. Asp.net中web.config配置文件详解
  7. android 画中画模式自定义,Android 8.0 Oreo 画中画模式
  8. 产品沉思录 V3.0 试读
  9. SOPC Builder failed to refresh PTF file
  10. leetcode347——前K个高频元素——java实现
  11. 【Git】rebase 用法小结
  12. 大数据技术架构_独家解读!阿里首次披露自研飞天大数据平台技术架构
  13. revo加密_使用Revo Uninstaller完全卸载程序以及更多其他功能
  14. 与10.110.12.29mask255.255.255.224属于同一网段的主机ip地址是
  15. imooc《Python入门与实战》学习总结(七)Python中的面向对象
  16. 公司常用协同管理软件介绍
  17. 恶搞 GitHub 贡献图
  18. 和菜头:放开那些员工
  19. win10中ensp路由器启动失败的解决办法
  20. 数据数据泄露泄露_通过超参数调整进行数据泄漏

热门文章

  1. Python 的列表的一些方法
  2. kafka和flume进行整合的日志采集的confi文件编写
  3. Window上,启动Tomcat服务之后,关闭启动窗口,服务器也随之关闭
  4. 如何配置eclipse的安卓SDK下载目录
  5. MySql 长时间读数据发生超时的异常 Mysql Reader Exception TimeOut expired
  6. 使用delphi 开发多层应用(十二)使用kbmMW webserver 返回JSON
  7. 《研磨设计模式》chap6 工厂模式factory(1)模式简介
  8. 数据结构解析——小白也能看懂的单链表
  9. 多线程通信—生产者和消费者模式
  10. optee内存管理和页表建立