范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

详解Docker你需要知道的Docker进阶知识三

  Docker 存储
  我们可以将数据保存在容器中,但是这样存在一些缺点: 当容器停止运行的时候,我们无法使用数据,并且容器被删除时,数据没有被保存下来。 数据保存在容器中的可写层中,我们无法轻松的将数据移动到其它地方。
  针对上述的缺点,有些数据,例如数据库文件,我们不应该将其保存在镜像或者容器的可写层中。Docker 提供三种不同的方式将数据从 Docker 主机挂载到容器中,分别为卷(  volumes  ),绑定挂载( bind mounts  ),临时文件系统( tmpfs  )。很多时候, volumes   总是正确的选择。volumes  , 卷存储在 Docker 管理的主机文件系统的某个目录( /var/lib/docker/volumes/  ) 里bind mounts  , 绑定挂载,可以将主机的文件或目录挂载到容器中tmpfs  , 仅存储在主机内存中,而不会写入主机文件系统
  无论使用上述的哪一种方式,数据在容器内看上去都是一样的。它被认为是容器文件系统的目录或文件。 卷列表
  对于三种不同的存储数据的方式来说,卷是唯一完全由  Docker   管理的。它更容易备份或迁移,并且我们可以使用 DockerCLI   命令来管理卷。
  列出本地可用的卷列表: [root@VM_0_17_centos ~]# docker volume ls DRIVER              VOLUME NAME local               0e15a7c0f491bbf500f419ec2637be6a298922cd9d9831b3875363a7f34971cb local               3fdec394f801640e1a39240be7bd627eb92a6af259844bbe8f5c0ba2a5baf9e5创建卷[root@VM_0_17_centos ~]# docker volume create 3a513b26b0bf00087149095c6dbbc6101a5f70efdc15d2430d8e62f4e92715f9
  这种由系统随机生成名称的卷称为  匿名卷 ,匿名卷名称不具备可读性,使用起来不太方便,所以创建卷时一般会指定其 name  。例如我们创建一个名为 volume1   的卷。[root@VM_0_17_centos ~]# docker volume create volume1 volume1 [root@VM_0_17_centos ~]# docker volume ls DRIVER              VOLUME NAME local               0e15a7c0f491bbf500f419ec2637be6a298922cd9d9831b3875363a7f34971cb local               3a513b26b0bf00087149095c6dbbc6101a5f70efdc15d2430d8e62f4e92715f9 local               volume1用卷启动一个容器
  创建好卷之后,我们可以用卷来启动一个容器,这里首先需要学习  docker container run   命令的两个参数:-v   或 --volume  由三个冒号(:)分隔的字段组成,  [HOST-DIR:]CONTAINER-DIR[:OPTIONS]  。HOST-DIR   代表主机上的目录或数据卷的名字。省略该部分时,会自动创建一个匿名卷。如果是指定主机上的目录,需要使用绝对路径。CONTAINER-DIR   代表将要挂载到容器中的路径OPTIONS   代表配置,例如设置为只读( ro  ),或者仅能被该容器使用( Z  ),或者可以被多个容器共享 ( z  )。多个配置项由逗号分隔。例如,我们使用  -v volume1:/volume1:ro,z  。代表的是意思是将卷 volume1   挂载到容器中的 /volume1   目录。 ro,z   代表该卷被设置为只读( ro  ),并且可以被多个容器同时使用( z  )--mount  由多个键值对组成,键值对之间由逗号分隔。例如:  type=volume,source=volume1,destination=/volume1,ro=true  。type   指定类型,可以指定为 bind  , volume  , tmpfs  。source   当类型为 volume   时,指定卷名称,省略该字段会新建一个卷。当类型为 bind   时,指定路径。可以使用缩写 src  。destination   挂载到容器中的路径。可以使用缩写 dst   或 target  。readonly   读写配置项, true   或 false  。可以使用缩写 ro  。
  对于前面创建的卷  volume1  ,可使用如下命令来在容器中使用:[root@VM_0_17_centos ~]# docker container run -it --name hellodocker3 -v volume1:/volume1 --rm ubuntu bash Unable to find image "ubuntu:latest" locally latest: Pulling from library/ubuntu 423ae2b273f4: Pull complete de83a2304fa1: Pull complete f9a83bce3af0: Pull complete b6b53be908de: Pull complete Digest: sha256:04d48df82c938587820d7b6006f5071dbbffceb7ca01d2814f81857c631d44df Status: Downloaded newer image for ubuntu:latest root@a23cea8fe875:/#
  使用  --mount   的命令如下:[root@VM_0_17_centos ~]# docker run -it --name hellodocker4 --mount type=volume,src=volume1,target=/volume1 --rm ubuntu bash
  可以看出   --mount   的可读性更好。所以推荐大家使用 --mount
  上述操作,我们运行了两个容器,并分别挂载了一个卷。对于这两个容器来说,由于挂载的是同一个卷,所以它们将共享该数据卷。多个容器共享数据卷时,需要注意并发读写问题。可以分别连接到两个容器中,操作数据来验证数据是同步的。 bind-mounts
  绑定挂载(  bind-mounts  )通过将主机上的目录挂载到容器中,使得容器可以操作和修改主机上的文件。
  例如,我们将  /home/hellodocker   目录挂载到容器中的 /home/hellodocker   目录下,使用的命令如下:[root@VM_0_17_centos hellodocker]#  docker run -it -v /home/hellodocker:/home/hellodocker --name hellodocker4 --rm ubuntu bash root@9d89e44a06a8:/# ^C root@9d89e44a06a8:/# ls bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var root@9d89e44a06a8:/# cd home/ root@9d89e44a06a8:/home# ls hellodocker root@9d89e44a06a8:/home# cd hellodocker/ root@9d89e44a06a8:/home/hellodocker# ls test1  test2 root@9d89e44a06a8:/home/hellodocker#
  而如果使用  --mount  ,相应的语句如下:[root@VM_0_17_centos hellodocker]# docker run -it --mount type=bind,src=/home/hellodocker,target=/home/hellodocker --name hellodocker5 --rm ubuntu bash
  如果挂载时指定的容器目录已存在,则该目录将被覆盖(还存在只是被隐藏了,因为其位于更下层)。并且如果主机上的目录不存在,会自动创建该目录。
  上述两个操作针对的是目录,而对于挂载文件来说,可能会出现一些特殊情况,涉及到绑定挂载和使用卷的区别。下面我们重现这一操作:
  首先在当前目录,即  /home/hellodocker   目录下,创建一个 test.txt   文件。并向其中写入文本内容 "test1":echo "test1" > test.txt
  接着创建一个容器  hellodocker6  ,将 test.txt   文件挂载到容器中的 /test.txt   路径,并查看容器中 /test.txt   文件的内容:[root@VM_0_17_centos hellodocker]# docker run -it -v /home/hellodocker/test.txt:/test.txt --name hellodocker6 ubuntu /bin/bash root@99d55b8d4d8a:/# cat test.txt test1
  这时新打开一个终端,通过  echo   命令向 /home/hellodocker/test.txt   文件追加内容 "test2",并在容器中查看 /test.txt   文件的内容:echo "test2" >> test.txtroot@99d55b8d4d8a:/# cat test.txt test1 test2
  这时无论是在容器中还是主机上都能查看到该文件的最新内容。接下来在主机上查看  test.txt   的 inode   号,并使用 vim   编辑该文件,添加 "test3",并查看该文件的内容:[root@VM_0_17_centos hellodocker]# ls -i test.txt 527823 test.txt [root@VM_0_17_centos hellodocker]# vim test.txt [root@VM_0_17_centos hellodocker]# ls -i test.txt 527050 test.txt
  在主机上使用  vim   编辑后,通过 vim   做出的修改并不能在容器中查看到root@68c277025b02:/# cat test.txt test1 test2
  这是因为  vim   编辑文件的时候,会将文件内容暂存到一个临时文件中,退出保存后会删除原来的文件,并将临时文件重命名为原文件。但是我们标识文件是通过 inode  ,因此 Docker 绑定的依然是旧的主机文件,所以容器中看到的依然是旧的内容。
  对于数据卷来说,由  docker   完全管理,而绑定挂载需要我们自己去维护。我们需要自己手动去处理这些问题,这些问题并不仅仅是上面演示的这些,还有用户权限, SELINUX   等。使用tmpfs挂载数据
  tmpfs   只存储在主机的内存中。当容器停止时,相应的数据就会被移除。$ docker run -it --mount type=tmpfs,target=/test --name hellodocker7 --rm ubuntu bash

此国产耳机品牌虽小众但很牛,它对销量的态度就如这耳机调音一样在我看来,耳机的声音有两种,一种是你一听就中毒的,典型的是暴利解析或者动次打次的低频。另一种则是需要你静静的品味,包括器材的搭配。估摸着还有人说还有第三种,那就是一耳朵觉得垃圾的。新华网公开点名批评特斯拉回应质疑不能态度傲慢针对近日特斯拉面对新车充电趴窝的甩锅国家电网的行为,新华网进行了公开点名批评回应消费者的质疑,不能轻描淡写,更不能态度傲慢。新华网在文章中表示,新能源汽车市场百花齐放,车企对待消费这个女人让76岁任正非低头向员工道歉!换做你会怎么办?全文导读今年76岁的任正非作为华为公司创始人,本可以安享晚年的,但却因为公司及家庭的事儿不能清闲下来。而这其中最让任老头疼的就是小女儿姚安娜。任正非为姚安娜向华为员工道歉上了热搜,恒大汽车恒驰7谍照曝光,拉动股价上涨2。4,但距离高点仍跌去9成自从恒大宣布造车以来,就一直处于雷声大雨点小的状态,从2020年8月至今,恒大一共公开了9款概念车型,但量产和上市却迟迟没有动作。恒大汽车2021年中期业绩公告显示,上半年恒大汽车兼顾跑车性能与轿车实用性,奥迪A5Sportback诠释极致生活态度作为最受欢迎的入门级轿跑,奥迪A5的中期改款备受个性张扬的年轻人期待。最终这款大众DreamCar也确实没有令人失望,采用全新家族设计语言的奥迪A5Sportback颜值出众,引起被特斯拉和中国车企双面夹击的欧洲市场,新能源汽车需求飞速提升根据目前欧盟禁售燃油车的时间表,留给传统燃油车的时间仅剩下不到15年的时间,并且在现在的大环境之下,在未来,各大车企们还会面临着更加严格的碳排放监管,因此各大车企也就开始了新能源汽更懂国人需求的平板电脑,小米平板5凭借这几点完胜iPad其实安卓系统的平板电脑一直以来都被消费者戴着有色眼镜来看待,因为生态和功能方面的缺陷,导致使用体验很一般,大多数用户在选择平板电脑时都会把目光放在iPad上,安卓平板则一直被调侃为4K8K电视距离普通老百姓的客厅还有多远?4K8K电视距离普通老百姓的客厅还有多远?相信从电视整机厂商内容提供方到普通老百姓,大家心里都有自己的答案。作为在一个8年里面,参与了多款超高清显示芯片(ASICSOC)的设计,一Flink基础(一)之DS简介(1)有状态的流式处理简介0简介ApacheFlink是一个分布式流处理器,具有直观和富有表现力的API,可实现有状态的流处理应用程序。它以容错的方式有效地大规模运行这些应用程序。Flink于2014年4月Flink操练(十一)之DS简介(11)基于时间和窗口的操作符(三)1基于时间的双流Join数据流操作的另一个常见需求是对两条数据流中的事件进行联结(connect)或Join。FlinkDataStreamAPI中内置有两个可以根据时间条件对数据Flink操练(九)之DS简介(9)基于时间和窗口的操作符(一)在本章,我们将要学习DataStreamAPI中处理时间和基于时间的操作符,例如窗口操作符。首先,我们会学习如何定义时间属性,时间戳和水位线。然后我们将会学习底层操作process
国家网信办发布第八批!区块链信息服务应标明这个编号根据区块链信息服务管理规定(以下简称管理规定),国家互联网信息办公室依法依规组织开展备案审核工作,现发布第八批共106个境内区块链信息服务名称及备案编号,任何单位或个人如有疑议,请远光软件与RPA中国联合主办第二届中国RPAAI开发者大赛近日,远光软件与RPA中国达成合作,双方将通过联合主办第二届中国RPAAI开发者大赛的形式,共同推动RPAAI教育的普及与发展,建设更加开放融合富有生命力的行业新生态。双方将在品牌联想一周丨科技邂逅时尚,520约会了陆仙人这是5月的第三周从这些关键词中,发现更好的联想复杂的世界,简单一点陆仙人520约会联想YOGA16s2022ThinkFamily媒体品鉴会三大进化联想电脑管家5。08大教室智慧教JAVA方法定义及调用1。方法概述1。1方法的概念方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集注意方法必须先创建才可以使用,该过程成为方法定义方法创建后并不是直预约破三万!小米新机还未发布已成爆款!真的强吗?其实在现在大家都比较关注手机配置的情况下,现在在手机市场上的发展中,要是有厂商想要做一款爆款还是很简单的,只要给产品配备上其他厂商现在还不敢做的配置,就能成为爆款,像摩托罗拉。但是雷军官宣小米12Ultra,新骁龙8120倍变焦120W快充,售价成亮点近日,雷军正式官宣,小米年度大作将率先搭载骁龙8。全新的骁龙8代号为8475的处理器,绝不是简单的半代小升级,而是性能和能耗的重大飞跃。虽然,雷军并没说明小米的大作是哪款手机,但米小米又一性价比新机或将发布,新款机型曝光,有望成为性价比神机哈喽大家好,我是你们的老朋友小馨,每天都会给大家更新我的原创内容。小馨又来给大家爆料了,小米又一款新机即将上市,你是不是也和小馨一样非常好奇呢?今天就带大家一起看一看。据爆料,小米2022年三千元手机排行榜3000元高性价比手机推荐(5月)参考1。性能第一梯队天玑9000骁龙8Gen1,第二梯队天玑8100骁龙888骁龙870,第三梯队骁龙778G2。主摄第一梯队GN1,第二梯队IMX766HM2,第三梯队GW1OV降价排行榜轿车整体销量下滑轩逸夺冠新能源汽车来势汹汹受到疫情影响,今年4月份国内车市销量大跌。根据乘联会近日公布的数据显示,4月国内乘用车市场零售达到104。2万辆,同比下降35。5,环比下降34。0,4月零售同比与环比增速均处于当首批吃螃蟹的纯电动车主5年后算了一笔账,吐槽省油不省钱开了5年纯电动汽车,作为第一批吃螃蟹的纯电动车主,有话想吐槽,纯电动汽车优势明显但5个缺点才是硬伤,太戳心,只有了解它的的优势与不足,这样买了新能源汽车才不会后悔,都说人的肠子是白半画幅单反,加上50定焦头,扫街是一种什么感觉?什么感觉?非常不好扫!毕竟50定焦镜头太短了,用这个镜头去扫街,感觉有的搞笑的感觉,那么近距离拍摄街头,一个被拍摄者,你离她那么近,好拍吗?501。4拍摄个大头照半身照还勉勉强强,