银河麒麟服务器操作系统运维实践 课件 20.-3 Docker容器安装与部署_第1页
银河麒麟服务器操作系统运维实践 课件 20.-3 Docker容器安装与部署_第2页
银河麒麟服务器操作系统运维实践 课件 20.-3 Docker容器安装与部署_第3页
银河麒麟服务器操作系统运维实践 课件 20.-3 Docker容器安装与部署_第4页
银河麒麟服务器操作系统运维实践 课件 20.-3 Docker容器安装与部署_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Docker虚拟化篇Docker核心组件Docker底层管理Docker原理与安装overlay2

UFS与AUFSDocker镜像应用Docker的特性本章目标◆了解Docker底层架构原理◆掌握Docker虚拟化名字空间的特性,以及不同名字空间的作用◆掌握Docker的安装◆了解Docker镜像的概念,掌握Docker镜像的管理与维护◆了解Docker容器的概念,掌握Docker容器的管理与维护Overlay2Overlay2docker支持多种graphDriver,包括vfs、devicemapper、overlay、overlay2、aufs等等,其中最常用的就是aufs了,但随着linux内核3.18把overlay纳入其中,overlay的地位变得更重,国产麒麟操作系统docker环境默认使用Overlay2存储驱动Overlay2查看docker默认的存储目录/var/lib/docker,我们只需要关心/var/lib/docker/image和/var/lib/docker/overlay2两个目录首先我们创建一个容器,后面章节也会重点讲到容器。root@kylinos:~#dockerrun-dnginxOverlay2先到/var/lib/docker/image目录下查看,只能看到overlay2这个目录,docker会在/var/lib/docker/image目录下按每个存储驱动的名字创建一个目录,如这里的overlay2。接下来,使用tree命令浏览一下overlay2目录:Overlay2关键地方是imagedb和layerdb目录就是专门用来存储元数据的地方,那为什么区分image和layer呢?因为在docker中,image是由多个layer组合而成的,换句话就是layer是一个共享的层,可能有多个image会指向某个layer。那如何才能确认image包含了哪些layer呢?我们可以在imagedb这个目录中去找。比如之前启动的nginx容器,我们可以先找到这个容器对应的镜像Overlay2我们打印/var/lib/docker/image/overlay2/imagedb/content/sha256这个目录:所显示的内容正是记录我们nginx镜像元数据的文件,接下来cat一下这个文件,得到一个长长的json,我们只查看关键信息,也就是rootfscat/var/lib/docker/image/overlay2/imagedb/content/sha256/904b8cb13b932e23230836850610fa45dce9eb0650d5618c2b1487c2a4f577b8|json_pp|grep-A10rootfsOverlay2可以看到rootfs的diff_ids是一个包含了6个元素的数组,其实这6个元素正是组成nginx镜像的6个layerID,从上往下看,就是底层到顶层。现在得到了组成这个image的所有layerID,那么我们就可以带着这些layerID去寻找对应的layer了。接下来,我们返回到上一层的layerdb中,先打印一下这个目录:ls-l/var/lib/docker/image/overlay2/layerdb/Overlay2在这里我们只看mounts和sha256两个目录,打印一下sha256目录,在这里,我们仅仅发现650abce4b..这个最底层的layer,那么剩余5个layer为什么会没有呢?那是因为docker使用了chainID的方式去保存这些layer,我们可以查看此目录中的diff内容找到对应的layer[root@kylinossha256]#cat650abce4b096b06ac8bec2046d821d66d801af34f1f1d4c5e272ad030c7873db/diffsha256:650abce4b096b06ac8bec2046d821d66d801af34f1f1d4c5e272ad030c7873dbOverlay2依次类推,我们就能找出所有的layerID的组合。但是上面我们也说了,/var/lib/docker/image/overlay2/layerdb存的只是元数据,那么我们需要到overlay2目录中去找到对应的真实目录,那么这个之间的映射关系是怎么得到的呢?其中cache-id就是我们关键所在了。我们打印一下[root@kylinos650abce4b096b06ac8bec2046d821d66d801af34f1f1d4c5e272ad030c7873db]#catcache-id2fe08f9bf01851efb59984fc5fd3983bf416f11af02f4b120b6a81ad88521cbcOverlay2这个id就是对应/var/lib/docker/overlay2/2fe08f9bf01851efb59984fc5fd3983bf416f11af02f4b120b6a81ad88521cbc。因此,以此类推,更高一层的layer对应的cache-id也能找到对应的真实目录,当这些真实目录的diff目录通过联合挂载的方式挂载到某个目录,就能完成整个容器需要的rootfs了。/var/lib/docker/image/overlay2/layerdb/mount/目录保存的是docker的容器读写层。这其实也对应了docker的存储实现机制,镜像都是只读层,当运行一个容器时,会产生一个容器层,该层即是读写层。Docker镜像应用03镜像搜索从docker镜像仓库模糊搜索镜像用法: dockersearch镜像关键字[root@kylinos~]#dockersearchcentos镜像下载从docker指定的仓库下载镜像到本地用法:dockerpull镜像名称[root@kylinos~]#dockerpullcentos本地镜像查看查看本地存储的镜像[root@kylinos~]#dockerimages字段说明:◆

REPOSITORY:镜像的名字◆

TAG:镜像的标签◆

IMAGEID:镜像的ID号◆

CREATED:镜像建立时间◆

SIZE:镜像大小镜像信息查看显示镜像的详细信息用法:dockerinspect[镜像名称或者ID][root@kylinos~]#dockerinspectcentos[{"Id":"sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6","RepoTags":["centos:latest"],"RepoDigests":["centos@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177"],"Parent":"","Comment":"","Created":"2021-09-15T18:20:05.184694267Z","Loaded":"2023-03-06T11:32:38.977637363+08:00","Container":"9bf8a9e2ddff4c0d76a587c40239679f29c863a967f23abf7a5babb6c2121bf1","ContainerConfig":{......镜像保存保存镜像为压缩文件用法:dockersave-o压缩文件名称[镜像名称或者ID][root@kylinos~]#dockersave-ocentos_base.tarcentos[root@kylinos~]#ls镜像删除删除本地镜像库中的某个镜像用法:dockerrmi[镜像名称或者ID][root@kylinos~]#dockerrmicentos镜像载入导入压缩文件镜像用法:dockerload-i镜像压缩文件名称[镜像名称或者ID][root@kylinos~]#dockerload-icentos_base.tarDocker容器应用04容器查看显示本地容器列表用法:dockerps[-a显示所有容器,默认只显示运行的][root@kylinos~]#dockerpsCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMESe0f31251b9aanginx"/docker-entrypoint.…"LessthanasecondagoUpLessthanasecond80/tcpmodest_zhukovsky容器创建容器创建命令用法:dockerrun[options]镜像名称后台执行容器:[root@kylinos~]#dockerrun-d--namecentos_basecentos但后台运行,其实是有前提的,如果没有前台进程,那么实际运行完dockerrun命令后,会处于退出状态,即exited。Docker容器后台运行,必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(比如运行ping,sleep),就是会自动退出的。容器创建容器创建命令用法:dockerrun[options]镜像名称前台执行的容器:[root@kylinos~]#dockerrun-it--namecentos_basecentos/bin/bash[root@1567f7ae666f/]#◆-i:交互式创建◆-t:创建一个伪终端◆-d:后台执行◆--name:容器名称容器信息查看显示容器的详细信息用法:dockerinspect[容器名称或者ID][root@kylinos~]#dockerinspectcentos[{"Id":"44431fa52ae37b8beafd208770673d6b1448de3e8240cbc8e9a64d7b8913e6a8","Created":"2023-03-06T03:39:16.764055641Z","Path":"/bin/bash","Args":[],"State":{"Status":"exited","Running":false,"Paused":false,"Restarting":false,"OOMKilled":false,"Dead":false,"Pid":0,"ExitCode":0,"Error":"","StartedAt":"2023-03-06T03:39:17.011795656Z","FinishedAt":"2023-03-06T03:39:17.028385233Z“......容器删除删除一个本地容器用法:dockerrm[容器名称或者ID][–force][root@kylinos~]#dockerrmcentos_base默认删除的容器必须是关闭状态,建议如果希望删除一个运行的容器,可以先关闭在删除。当然也可以在后面直接加上--force强制删除一个运行中的容器。容器执行容器执行命令用法:dockerexec[容器名称或者ID]命令[root@kylinos~]#dockerrun-itd--namecentos_basecentos[root@kylinos~]#dockerexeccentos_basels/容器前台调入将一个运行容器的标准输出、错误输出、标准输入调入前台。默认容器都会在后台运行,如果你想进入容器内,就可以使用该命令。这样你就可以交互式的在容器中执行命令了。用法:dockerattach[容器名称或者ID][root@kylinos~]#dockerattachcentos_base[root@bee95296aae0/]#容器启动启动一个容器用法:dockerstart[容器名称或者ID][root@kylinos~]#dockerstartcentos_base容器停止关闭一个容器用法:dockerstop[容器名称或者ID][root@kylinos~]#dockerstopcentos_base容器重启重启一个容器用法:dockerrestart[容器名称或者ID][root@kylinos~]#dockerrestartcentos_base容器挂起挂起运行中的容器用法:dockerpause[容器名称或者ID][root@kylinos~]#dockerpausecentos_base容器恢复恢复挂起容器用法:dockerunpause[容器名称或者ID][root@kylinos~]#dockerunpausecentos_base[root@kylinos~]#dockerps-a容器重命名重命名容器用法:dockerrename容器名称容器新名称[root@kylinos~]#dockerrenamecentos_basecentos[root@kylinos~]#dockerps-a容器端口映射显示容器与宿主机的端口映射信息用法:dockerport[容器名称或者ID]首先运行nginx容器,将nginx容器的80端口映射到主机80端口[root@kylinos~]#dockerpullnginx[root@kylinos~]#dockerrun--namemy_nginx-d-p80:80nginx[root@kylinos~]#dockerportmy_nginx80/tcp->0.0.0.0:80容器的TCP80端口与宿主机的所有IP的80端口绑定容器的TCP80端口与宿主机的所有IP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论