终于读懂了 Docker

时间:2022-09-27 10:54:05

前言:
????作者简介:小曾同学.com,小伙伴们也可以叫我小曾,一个致力于测试开发的博主⛽️
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。????
座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!????

本篇主要是整理了下 Docker 相关的理论知识。

1. Docker概念

Docker 是基于 Go 语言的开源应用容器虚拟化技术。
Docker的主要目标是build、ship and run any app,anywhere,即通过对应用组件的封装、分发、部署、运行等生命周期的管理,达到应用组件级别的一次封装、到处运行(来源于官网)。这里的应用组件,即可以是一个Web应用,也可以是一套数据库服务,甚至是一个操作系统或编译器。

通俗的讲,可以将 Docker 可以类比于 VMware,如果开发想要在生产环境运行,则直接将本地应用及所需要的环境打包成一个镜像,将镜像运行在 Docker 中,这样就可以解决测试环境和生产环境不一致的问题。(镜像可以类比我们常见的ubuntu.ios镜像文件。)

2. 为什么会有Docker

为了从根本上解决开发和运维环境不一致的问题。也就是说,在安装时,把原始环境一模一样地复制过来,开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。

开发在打包应用时,将应用所需要的文件打包成一个镜像文件,将镜像运行在docker中。从而达到一次镜像,处处运行。
可以一句话概括为:解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术

3. Docker容器与传统虚拟机比较

图片来源于官网 https://www.docker.com/resources/what-container/
终于读懂了 Docker
左图是 Docker 容器架构,右侧是传统虚拟机架构。
Infrastructure可以看做是宿主机,Hypervisor可以看做是VMware。
Docker 容器架构直接在宿主机上运行,而传统虚拟机需要在宿主机中安装一个虚拟机,然后在虚拟机中机型部署。Docker 与传统虚拟机具体比较内容如下:

  1. 传统虚拟机技术基于安装在主操作系统上的虚拟机管理系统(VM),创建虚拟机,在虚拟机上安装linux操作系统,再从 Linux 操作系统中安装部署各种应用。也就是说,传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需要应用进程。这样导致的问题是资源占用多,冗余步骤多,启动慢。
  2. Docker 容器内的应用进程直接运行在宿主机的内核(内核级虚拟化),容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
  3. 每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进行不会相互影响,能区分计算资源,容器之间也可以建立通信机制。

当被问:为什么Docker比VM虚拟机快???可以从以下两方便回答。

  1. Docker 有着比虚拟机更少的抽象层,因为 Docker 不需要虚拟机实现硬件资源虚拟化,运行在 Docker 容器上的程序直接使用的都是实际物理机的硬件资源,因为在CPU、内存利用率上 Docker 将会在效率上有明显发优势。
  2. Docker 利用的是宿主机的内核,而不需要加载操作系统 OS 内核。

4. Docker的三大核心

4.1 镜像(image)

当我们安装一个虚拟机的时候,需要有一个.ios镜像文件,说的是一个意思,所以可理解为镜像是一个只读文件。当然镜像也是创建 Docker 容器的基础。

4.2 容器(container)

容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除。也可以把容器看做一个简易版的 Linux 系统

4.3 仓库(repository)

仓库是集中存放镜像文件的地方,我们可以把镜像发布到仓库中,需要的时候再从仓库中拉下来。仓库分为公开仓库和私有仓库。
最大的公开仓库是 Docker Hub,国内的公开仓库包括阿里云网易云等。

5. Mac中docker安装

Mac 中安装 Docker 十分简单,在此不做赘述。可以参考官网提供的步骤https://docs.docker.com/get-docker/

注意:Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。也就是说,如果想在 windows 上部署 Docker,需要先安装一个虚拟机,并在安装一个linux操作系统。在安装linux系统的虚拟机中运行 Docker。

6. 阿里云镜像加速配置

  1. 首先登录阿里云平台https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

  2. 在产品与服务——容器镜像服务——创建个人版实例,点击镜像加速器。复制加速器地址。

    终于读懂了 Docker

  3. 不同平台配置方法不同,下面以 Mac 为例。

    在任务栏点击 Docker Desktop 应用图标 -> Perferences,在左侧导航菜单选择 Docker Engine,在右侧输入栏编辑 json 文件。将加速器地址写到"registry-mirrors"的数组里,点击 Apply & Restart按钮,等待Docker重启并应用配置的镜像加速器。

    终于读懂了 Docker

    使用命令 docker info 检查配置是否生效

    docker info 
    

    终于读懂了 Docker

7. 本章小结

本章主要介绍了Docker的基本概念、Docker 容器和传统虚拟机的区别、阿里云镜像加速配置等,总结 Docker 容器的优势有以下几点。(以下内容来源于《Docker技术入门与实战》)

  • 一次构建、随处运行
  • 更快速的应用交付和部署
  • 更便捷的升级和扩缩容
  • 更简单的系统运维
  • 更高效的计算资源利用