WordPress多站点默认设置,网站背景 手机显示不全,简答网站建设流程有哪些,个人域名注册免费docker是什么 docker本质docker和虚拟机的区别docker架构Docker Registry镜像仓库分类镜像仓库工作机制docker Hub docker本质 Docker 本质其实是 LXC 之类的增强版#xff0c;它本身不是容器#xff0c;而是容器的易用工具。容 器是 linux 内核中的技术#xff0c;Docker 只… docker是什么 docker本质docker和虚拟机的区别docker架构Docker Registry镜像仓库分类镜像仓库工作机制docker Hub docker本质 Docker 本质其实是 LXC 之类的增强版它本身不是容器而是容器的易用工具。容 器是 linux 内核中的技术Docker 只是把这种技术在使用上简易普及了。Docker 在早 期的版本其核心就是 LXC 的二次封装发行版。Docker 作为容器技术的一个实现或者说让容器技术普及开来的最成功的实现。Docker 是基于 Go 语言实现的一个开源项目它的主要目标是“BuildShip andRun Any APPAnywhere”即通过对组件的封装、分发、部署、运行等生命周期的管理使得用户的应用及其运行环境能够做到“一次封装到处运行”。早期 Docker 利用 LXC 做容器管理引擎但是在创建容器时不再使用模板去安装生成而是通过镜像技术把一个操作系统用户空间所需要使用到的组件事先编排好并整体打包成一个文件image 文件镜像文件集中放在一个仓库中。当需要创建容器时Docker 调用 LXC 的工具 lxc-create但不再通过 lxc 的模板去安装而是连接到镜像服务器上下载匹配的镜像文件而后基于镜像启动容器。所以Docker 极大的简化了容器的使用难度。以后我们创建启动容器只需要一个命令docker-rundocker-stop 就可以启动停止一个容器了。 docker和虚拟机的区别 从磁盘占用上来说虚拟机所需要的磁盘空间会更大而docker需要的磁盘空间会更少因为对于虚拟机来说它是从物理层开始往上进行模拟的每个虚拟机都有自己的操作系统而对于docker来说则不是docker只是将程序和运行环境打包在了一起多个docker之间共享宿主机的操作系统从cpu和内存占用上来说虚拟操作系统非常占用cpu和内存需要通过虚拟层调用占用率高而对于docker来说docker引擎占用资源极低直接作用于宿主机操作系统占用率会比较少从启动速度上来说虚拟机的启动速度比较慢因为虚拟机需要启动自己的虚拟操作系统而docker不用;从应用部署上来说虚拟机需要手动进行部署速度慢而docker可以体系化部署可以自动化速度较快;从隔离性上来说虚拟机的隔离性更高docker隔离性较低;从封装性上来说虚拟机是打包整个操作系统而docker是打包项目代码和依赖信息docker会更加轻量化; docker为什么比虚拟机资源利用率高启动块 一个虚拟机在启动的时候徐要重新加载操作系统而容器的启动不需要因此docker在启动上比虚拟机更快;容器通过docker engine创建出来之后容器可以自己于宿主机OS进行交互而对于虚拟机来说虚拟机传递出来的信息需要通过Hypervisor层才能于宿主机的操作系统进行交互因此在cpu和内存利用率上docker会比虚拟机更加高效; docker架构 Docker 使用客户端-服务器 (C/S) 架构模式使用远程 API 来管理和创建 Docker 容器。 Docker 容器通过 Docker 镜像来创建。 registry docker 仓库用来保存镜像文件的可以理解为版本控制中的代码仓库gitHub、gitee等。docker这个仓库是由docker官方自己提供的名字叫docker HubDocker daemon Docker daemon 是服务器组件是docker最核心的后台进程我们也把它称为守护进程docker容器的创建就是由这个组件来完成的当然如果你的服务器山想要运行docker容器该组件也是必不可少的;docker client docker 客户端可以通过命令行或者其它工具使用docker API来与docker daemon进行交互(类比于mysql);docker Host 一个物理的或虚拟的机器就是docker daemon进程跑起来的机器;docker image 就是用来创建docker容器的模板容器于镜像的关系类比于类和对象的区别;docker 容器 基于某个docker镜像跑起来的docker 容器; 现在我们用直白的语言来理解以上过程 你现在想要去买一个小米15的手机于是走向了离你最近的小米之家然后问了问店员“你们这里有没有小米15”无非就得到两种回答第一种“有的先生你需要什么配置和颜色”第二种“不好意思先生我们当前门店没有现货如果您确实需要的话我可以去市里面的仓库中给你调集一台过来”对于第一种情况我们只需要详细告诉店员我们需要的配置和颜色即可把小米15拿回家了而对于第二种情况的话则需要等待店员去仓库调取我们才能拿到在仓库中又分为许许多多的小仓库每个小仓库放的都是不同型号的手机比如有些小仓库放的是小米14、有的是小米13等等店员只需要找到小米15的小仓库然后根据用户要求的配置和颜色拿取对应的手机即可在此之后我们终于拿到了心心念念的小米15了然后欣喜的开机开始了与小米15没羞没臊的生活了… 在上面这个故事中用户就类似我docker架构中的客户端小米之家就类似于docker中的服务端存放手机的仓库就类似于docker Hub未开机的手机类似于镜像开机运行的手机类似于容器; Docker Registry 镜像仓库 (Docker Registry) 负责存储、管理和分发镜像并且提供了登录认证能力建立了仓库的索引。 镜像仓库管理多个 Repository Repository 通过命名来区分。每个 Repository 包含一 个或多个镜像镜像通过镜像名称和标签 (Tag)来区分。 这里的镜像仓库就类似于上文故事中的存放小米手机的仓库Repository就类似于仓库中的一个个小仓库而在小仓库都存放着型号相同的手机但是配置不一致Repository也是类似存放的都是功能相同的镜像但是每个镜像之间版本不同; 一个容器镜像包含了两个部分一个是元数据其实就是由 dockerfile 构建出来的描述文件这个描述文件会说这个容器镜像有多少层每一层里面有什么内容它的checksum 这些信息都会记录下来还有最终的可执行文件在哪就是在存储数据里面就是在一个一个的 blob 里面真正占有空间的就是这些 blob。 镜像仓库分类 按是否对外开放划分也是研发人员常说的: 公有仓库像阿里云、dockerhub 等放到公有网络上不用登录就可以下载镜像 供大家访问使用私有仓库不对外开放往往位于私有网络只有公司内部人员可以使用。 按供应商和面向群体划分: sponsor赞助 registry第三方的 registry供客户和 docker 社区版使用.mirror(镜像 registry第三方的 registry只让客户使用例如阿里云必须注册才能使用.vendor(供应商) registry由发布 docker 镜像的供应商提供的 registry例如像Google 和 Redhat 提供了镜像仓库服务.private registry通过没有防火墙和额外的安全层的私有实体提供的 registry仅供内部使用. 镜像仓库工作机制 镜像仓库使用流程: 创建仓库在docker Hub、阿里云、腾讯云上创建即可;docker login 仓库地址: 使用该命令登录你的仓库如果不指定仓库地址那么默认登录的是docker Hub仓库;docker pull 如果你是从docker 官方仓库拉取那么其实与前面的docker login关系不大;如果你是从自己的仓库拉取那么前面的docker login关系就比较大如果拉取的自己的仓库是开源的那么docker pull可以直接拉取成功但如果是私有的那么你直接拉取会失败要想成功必须使用docker login登录;docker push :推送镜像无论我们要推送的仓库是开源的还是私有的都必须登录才可以推送; 实际研发中镜像仓库如何使用: Docker Registry 中的镜像通常由开发人员制作而后推送至“公共”或“私有”Registry 上 保存供其他人员使用例如“部署”到生产环境; docker Hub docker Hub是什么? Docker Hub 是 Docker 提供的托管存储库服务用于查找容器映像并与您的团队共享。 具有以下功能 个人可以注册私有仓库能够发布自己的镜像提供镜像检索能力提供海量官方和认证组织的镜像从 GitHub 和 Bitbucket 自动构建容器镜像并将它们推送到 Docker Hub支持 webhookwebhook 是一种基于 HTTP 的回调函数,发生指定的事件时服务器会自动将相关的有效负载发送到客户端的 webhook URL。 docker Hub功能浏览: 镜像搜索镜像tag查找: 国内镜像源: 一般来说docker pull从官方仓库拉取镜像会比较慢毕竟docker hub的服务器在国外麻为了解决这个问题我们一般会为docker damemon配置国内镜像仓库就是让我们每次docker pull的时候docker daemon都能先去镜像仓库中看看实在没找到再去docker Hub仓库查找这样会加快我们镜像拉取的速率; 如何配置国内镜像源: 打开/etc/docker/daemon.json文件没有就创建一个在这个文件中写入: { “registry-mirrors”:[“https://zue8awxu.mirror.aliyuncs.com”] }注意如果最外层以及你给有了配置不要直接覆盖而是将下面的内容添加然 后确保 json 的格式正确重新加载配置并重新启动docker systemctl daemon-reload //加载配置 systemctl restart docker //重启docker服务