首页 / 资讯中心 / 文章详情

知识点3---软件虚拟化管理软件Docker

知识点3---软件虚拟化管理软件Docker ★ FEATURED ARTICLE
知识点2给大家介绍了硬件辅助虚拟化的KVM但实际使用率来讲它没有Docker高原因是显而易见的KVM它不能超卖而国内的云计算收益主要依赖超卖因此这个时候软件虚拟化就显得更经济docker的控制核心是容器但它本身是容器运行时工具的一种。Docker是早期发展项目2013年现已成为最广泛使用的容器引擎技术。随着容器生态繁荣出现了containerd、rkt、Kata Container、CRI-O等多种运行时工具。不同工具功能各异有些仅运行容器有些还提供镜像管理功能根据提供的功能不同分为低层运行时和高层运行时两类运行时需配合工作不是独立运行的。低层运行时工具负责与宿主机操作系统直接交互根据指定镜像运行容器进程并管理容器的整个生命周期比如负责执行设置容器Namespace、Cgroups等基础操作。高层运行时负责镜像的下载、转换等准备工作专注于镜像格式、解包和管理为开发者提供管理API在早期对于服务器虚拟化的使用有过一个流派基于Windows server系统VMware组成服务器集群但是后期由于这样的使用方式维护成本相当高比如服务器的序列、服务器台账以及服务器与服务器之间的切换等等诸如此类的问题往往需要人工去主导所以这种流派渐渐的泯灭消失在商用环境中了如今只会在一些学习教培环境下见到这样的环境大多数商用环境中所使用的虚拟化技术通常就是linuxdockerk8s至于k8s较新版本弃用docker这个事情后面知识点会提及总之好处是docker将虚拟化的使用变得更简洁更轻量化大大的简化了运维成本而k8s是后面我们要介绍的一个东西它其实是一个容器或者虚拟化的脚手架这个脚手架的作用就是用来解决服务器的序列、服务器故障切换等等的运维问题它的运行的核心是基于逻辑单元pod你可以把pod看成我们开发好的一个服务包一个pod里面包含着各种对应的资源最核心的当然就是容器或者虚拟机言归正传Docker它的本质是将某个服务做成镜像用的时候实例化一个容器环境有点开箱即用的味道。最直观的好处就是当我们开发一个东西后拿到它的人不在需要一点一点的复刻运行环境只需要拿到我们提供的Docker镜像就可以直接运行。另一点好处启动快我们在开发中常常用到VMware但虚拟机实例启动一次往往是分钟级的而Docker运行的虚拟容器的重启是秒级的虚拟容器它本质上是一个被隔离的进程其中运行了Docker镜像的实例对象Docker的核心三大要素分为镜像、容器、仓库其中镜像就和我们安装系统的ISO一个意思是实例化容器时的模板。容器是镜像的实例。仓库是存放镜像的地方。从架构组成上来讲docker由runc底层运行时、containerd高层运行时、dockerd守护进程三部分组成分别负责容器生命周期、镜像管理、客户端接口及API安装docker需要使用CentOS 7 操作系统与RHEL7相同也可在国产化系统如麒麟、欧拉上使用。有两个版本系列。Docker-ce叫社区版免费版本适合个人开发者测试使用。Docker-ee企业版收费版本提供1个月免费试用2020年曾因国际政治原因限制中国企业使用。本博客教程使用26.1.4这是写博客时的最新版但实际工作中按需使用20.10.x等特定版本第一步清空旧Docker依赖如果之前安装过yum remove-ydocker* docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine第二步安装Docker先安装所需要的依赖yuminstall-yyum-utils device-mapper-persistent-data lvm2添加Docker的yum下载源这里用阿里的。如果阿里镜像保存403一般是因为你所在的网络访问太多被屏蔽了换一个网就好了wget-O/etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#如果阿里镜像报错403就用华为的wget-O/etc/yum.repos.d/docker-ce.repo https://mirrors.huaweicloud.com/docker-ce/linux/centos/docker-ce.reposudosed-isdownload.docker.commirrors.huaweicloud.com/docker-ce/etc/yum.repos.d/docker-ce.repo更新yum缓存yum makecache fast安装默认是最新版如果你需要指定版本则运行如yum -y install docker-ce-版本号 docker-ce-cli-版本号yuminstall-ydocker-ce安装进程接收运行下面的命令如果正常输出则安装成功docker-v第三步Docker的启动和关闭启动dockersystemctl startdocker查看状态systemctl statusdocker停掉服务systemctl stopdocker希望加入开机启动项则运行systemctlenabledocker第四步默认时Docker的拉取的是官方的Docker Hub镜像仓库可是坏就坏在那是个国外网站慢的出奇所以要换成国内的。换的时候有个注意点24年7月以后路人用户不能用阿里docker镜像加速服务器了。注意只是不让路人用户用阿里镜像加速器了公共镜像资源 registry.cn-hangzhou.aliyuncs.com 开头的镜像还可以正常用如果你用的是阿里云下的产品比如云服务器实例配置的时候首先访问阿里云https://promotion.aliyun.com/ntms/act/kubernetes.html阿里云的登录可以使用你的淘宝账号登录不是非要注册无论你用什么必须要登录一个账号。随后访问阿里的容器Hub控制台https://cr.console.aliyun.com/cn-hangzhou/instances。其实你百度阿里云首页搜索docker镜像加速器也能找到入口在下面有四类操作系统的操作文档选择CentOS的并按照文档操作[roothdp3 ~]# mkdir -p /etc/docker [roothdp3 ~]# tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://你账号的专属串码.mirror.aliyuncs.com] } EOF [roothdp3 ~]# systemctl daemon-reload [roothdp3 ~]# systemctl restart docker如果你不是阿里云用户你就老老实实的跟着下面的步骤用公网上能免费用的加速镜像服务器就行第五步修改本地镜像存放路径就是本地仓库的地址用来保存下载的镜像因为默认的路径比较小你需要自己准备一个容量充足的路径地址vi/etc/docker/daemon.json{registry-mirrors:[https://docker.1ms.run],data-root:/opt/docker,dns:[8.8.8.8,114.114.114.114],max-concurrent-downloads:10,max-concurrent-uploads:5}第六步检查运行如下命令systemctl daemon-reload systemctl restartdockerdockerinfo在docker info的输出中你要注意看Docker Root Dir和Registry Mirrors是不是你设置好的。使用后期当你修改本地仓库路径时对于已经有过使用的容器你需要手动把源本地仓库下的所有内容cp到新的路径下docker公网仓库中有一个为新手准备好的hello world镜像你只需要执行run命令即可自动拉取并启动dockerrun hello-world这里额外说一个问题如果你部署docker的服务器有防火墙比如本篇复用了知识点2安装kvm的宿主机由于防火墙需要开启所以要注意防火墙的影响不过前面配置了网卡伪装和linux路由转发正常是不影响docker的。还有绝对不要看网上其他资料轻易的对docker和防火墙zone策略配置做更改会导致极其恶心的报错言归正传run是Docker的容器运行命令它的作用就相当于Java的new关键字一样镜像视为类实例化出一个容器对象。我们可以通过日志看一下它干了什么[rootnode1 docker]# docker run hello-worldUnable tofindimagehello-world:latestlocally latest: Pulling from library/hello-world 78445dd45222: Pull complete Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7 Status: Downloaded newer imageforhello-world:latest Hello from Docker!This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled thehello-worldimage from the Docker Hub.3. The Docker daemon created a new container from that imagewhichruns the executable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client,whichsent it to your terminal. To try somethingmoreambitious, you can run an Ubuntu container with: $dockerrun-itubuntubashShare images, automate workflows, andmorewith afreeDocker ID: https://cloud.docker.com/ Formoreexamples and ideas, visit: https://docs.docker.com/engine/userguide/在输出的日志中Unable to find image hello-world:latest locally是告诉你docker现在本地仓库里没有找到hello-world这个镜像且默认为最新版本。后面的Pull是告诉你在远程镜像库里面找到了该镜像并开始下载Digest和Status的输出告诉你下载结束并开始运行容器后面的输出都是这个镜像启动时的输出日志由镜像内部决定如果你输入了一个哪里都找不到的镜像则返回失败。[roothdp3 ~]# docker run hello-worlddhuehdUnable tofindimagehello-worlddhuehd:latestlocally docker: Error response from daemon: pull access deniedforhello-worlddhuehd, repository does not exist or may requiredocker login:denied: requested access to the resource is denied. Seedocker run --help.
阅读完成 · 觉得有帮助?
咨询建站