Docker数据管理

容器中管理数据主要有两种方式:

数据卷(Data Volumes)
数据卷容器(Data Volume Dontainers)

Docker的数据管理

数据卷

数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。数据卷的使用类似于Linux下对目录进行的mount操作。

#拉取镜像
docker pull centos:7#没有/var/www这个目录
[root@localhost ~]# ls /var/www
ls: cannot access /var/www: No such file or directory#宿主机目录/var/www挂载到容器中的/datal。
#注意:宿主机本地目录的路径必须是使用绝对路径。如果路径不存在,Docker会自动创建相应的路径。
#-v选项可以在容器内创建数据卷[root@localhost ~]# docker run -v /var/www:/data1 --name c7 -itd centos:7 /bin/bash
33c4514dfb161069f7ab0ee584bbddb2c7d74baec48ac6cfdfadb522455ed387
[root@localhost ~]# ls /var/www/
[root@localhost ~]# ls /var/www/ -d
/var/www/#进入容器
[root@localhost ~]# docker exec -it c7 bash
[root@33c4514dfb16 /]# ls
anaconda-post.log  bin  data1  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
#写入数据
[root@33c4514dfb16 /]# echo 'qzzqzz' > /data1/123.txt
[root@33c4514dfb16 /]# cd data1
[root@33c4514dfb16 data1]# ls
123.txt
[root@33c4514dfb16 data1]# cat 123.txt
qzzqzz
[root@33c4514dfb16 data1]# exit
exit#进入宿主机查看刚刚所在容器写的数据
[root@localhost ~]# cd /var/www/
[root@localhost www]# ls
123.txt
[root@localhost www]# cat 123.txt 
qzzqzz

数据卷容器 

如果需要在容器之间共享一些数据,最简单的方法就是使用数据卷容器。数据卷容器是一个普通的容器,专门提供数据卷给其他容器挂载使用。

#创建一个容器做数据卷容器
[root@localhost www]# docker run -itd --name test1 -v /data1 -it centos:7 /bin/bash
94e885f3b013476367a743a552a60aff601aa03dff69f1c6b9bbb9dca70a2a19
[root@localhost www]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES
94e885f3b013   centos:7   "/bin/bash"   4 seconds ago    Up 2 seconds              test1
33c4514dfb16   centos:7   "/bin/bash"   12 minutes ago   Up 12 minutes             c7#进入数据卷容器,并写入数据
[root@localhost www]# docker exec test1 bash
[root@localhost www]# docker exec -it test1 bash
[root@94e885f3b013 /]# ls
anaconda-post.log  bin  data1  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@94e885f3b013 /]# echo '123123' > /data1/123.txt
[root@94e885f3b013 /]# cd data1/
[root@94e885f3b013 data1]# ls
123.txt
[root@94e885f3b013 data1]# cat 123.txt 
123123

#使用--volumes-from 来挂载test1容器中的数据卷到test2容器
[root@localhost www]# docker run -itd --volumes-from test1 --name test2 centos:7 /bin/bash
458416a9d16887242f3ba41c800a4666321d29dbc1eb8145d3acafc7f3de51be[root@localhost www]# docker exec -it test2 bash
[root@458416a9d168 /]# ls
anaconda-post.log  bin  data1  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@458416a9d168 /]# cd data1/
[root@458416a9d168 data1]# ls
123.txt
[root@458416a9d168 data1]# cat 123.txt 
123123

注意:使用–volumes-from参数所挂载数据卷的容器自身并不需要保持在运行状态。如果删除了挂载的容器,数据卷并不会被自动删除。如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时显式使用docker rm-v命令来指定同时删除关联的容器。挂载了数据卷的容器也可以作为数据卷容器

容器互联

容器互联是通过容器的名称在容器间建立一条专门的网络通信隧道。简单点说,就是会在源容器和接收容器之间建立一条隧道,接收容器可以看到源容器指定的信息

[root@localhost www]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES
458416a9d168   centos:7   "/bin/bash"   3 minutes ago    Up 3 minutes              test2
94e885f3b013   centos:7   "/bin/bash"   7 minutes ago    Up 7 minutes              test1
33c4514dfb16   centos:7   "/bin/bash"   19 minutes ago   Up 19 minutes             c7#进入test1容器,ping不通test2容器
[root@localhost www]# docker exec -it test1 bash
[root@94e885f3b013 /]# ping test2
ping: test2: Name or service not known
[root@94e885f3b013 /]# exit
exit

#创建并运行接收容器取名test3,使用--1ink选项指定连接容器以实现容器互联
#--1ink容器名:连接的别名[root@localhost www]# docker run -itd -P --name test3 --link test1:test1 centos:7 /bin/bash
9d1400fa124e958c8de5567deb40bdd3033a02fffa12074cedf3f5ba04002eab#进入test3,可以ping通test1
[root@localhost www]# docker exec -it test3 bash
[root@9d1400fa124e /]# ping test1
PING test1 (172.17.0.3) 56(84) bytes of data.
64 bytes from test1 (172.17.0.3): icmp_seq=1 ttl=64 time=0.204 ms
64 bytes from test1 (172.17.0.3): icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from test1 (172.17.0.3): icmp_seq=3 ttl=64 time=0.106 ms
64 bytes from test1 (172.17.0.3): icmp_seq=4 ttl=64 time=0.075 ms
^C
--- test1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.075/0.115/0.204/0.053 ms

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/127605.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云服务器CVM_云主机_云计算服务器_弹性云服务器-腾讯云

腾讯云服务器CVM提供安全可靠的弹性计算服务,腾讯云明星级云服务器,弹性计算实时扩展或缩减计算资源,支持包年包月、按量计费和竞价实例计费模式,CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格,提供9个9的数…

微服务学习(十一):安装Git

微服务学习(十一):安装Git 1、下载Git 官网下载Git 2、将下载后的资源包上传到服务器 3、解压并安装 tar -zxvf git-2.42.0.tar.gz4、安装依赖 yum install zlib yum install zlib-devel5、执行操作命令 cd /home/git/git-2.42.0 ./co…

Nginx高级 第一部分:扩容

Nginx高级 第一部分:扩容 通过扩容提升整体吞吐量 1.单机垂直扩容:硬件资源增加 云服务资源增加 整机:IBM、浪潮、DELL、HP等 CPU/主板:更新到主流 网卡:10G/40G网卡 磁盘:SAS(SCSI) HDD(机械…

使用springboot服务端远程调试? 试试HTTP实现服务监听

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《初阶数据结构》《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 wi…

Linux 部署项目

部署 Linux 部署项目1. 宝塔部署1.1 前端部署1.2 后端部署 2. docker 部署2.1 后端部署2.2 前端部署 3. 跨域问题3.1 Nginx 代理(推荐)3.2 修改后端服务3.3 添加 web 全局请求拦截器 4. 域名解析DNSPod添加域名 Linux 部署项目 1. 宝塔部署 准备工作&am…

从0开始python学习-31.selenium 文本输入框、下拉选择框、文件上传、时间插件选择元素定位

目录 1. 纯文本输入框 2. 存在默认值的文本输入 3. 下拉选择框 4. 输入后下拉选择框 5. 文件上传 6. 时间插件 1. 纯文本输入框 driver.find_element(By.XPATH,/html/body/div[2]/td[2]/input).send_keys(测试名称) 2. 存在默认值的文本输入 注意: 1. 这种存…

中小企业车间生产管理方案

车间生产管理,员工该如何做?工厂效率上不去,应该怎么提高? 与其靠人力,不如靠“外力”,通过流程化的生产管理系统,将每个流程都置于规范的管理下,优化制造业务流程,整合…

深入了解快速排序:原理、性能分析与 Java 实现

快速排序(Quick Sort)是一种经典的、高效的排序算法,被广泛应用于计算机科学和软件开发领域。本文将深入探讨快速排序的工作原理、步骤以及其在不同情况下的性能表现。 什么是快速排序? 快速排序是一种基于分治策略的排序算法&am…

【python爬虫】闲鱼爬虫,可以爬取商品

目录 前言 一、介绍 二、爬虫流程 1. 确定关键词并构造URL 2. 发送网络请求 3. 解析HTML并提取数据 4. 保存数据 三、使用代理IP 四、完整代码 五、总结 前言 闲鱼是一个很受欢迎的二手交易平台,但是由于没有开放API,我们需要使用爬虫来获取数…

视频转GIF:快速生成有趣的动态图片

随着社交媒体的快速发展,GIF动态图片已经成为了人们表达情感、分享生活片段的重要方式。将视频片段转换成GIF动态图片,可以让人们更好地分享和表达自己的情感,也可以让一些有趣的瞬间变得更加生动有趣。本文将介绍如何将视频快速转换成GIF动态…

TomCat关键技术

一、Tomcat 是什么 Tomcat 是一个 HTTP 服务器。通过前面的学习,我们知道HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式,同时也通过 ajax 和 Java Socket 分别构造了 HTTP 客户端。HTTP 服务器我们也同样可以通过 Java Socket 来实现. 而 Tomcat 就是基于 J…

Linux系列讲解 —— 【fsck】检查并修复Linux文件系统

当文件系统出现损坏时,例如文件无法查看,删除等,可以使用 fsck(File System Consistency Check)进行修复。但是需要注意fsck在修复时,如果检查出某个文件有问题,可能会向用户请求删除。所以&…