前言:
作者简介:小曾同学.com,小伙伴们也可以叫我小曾,一个致力于测试开发的博主⛽️
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。
座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!
本篇主要是整理了下 Docker 相关的理论知识。
Docker
是基于 Go 语言的开源应用容器虚拟化技术。
Docker的主要目标是build、ship and run any app,anywhere
,即通过对应用组件的封装、分发、部署、运行等生命周期的管理,达到应用组件级别的一次封装、到处运行(来源于官网)。这里的应用组件,即可以是一个Web应用,也可以是一套数据库服务,甚至是一个操作系统或编译器。
通俗的讲,可以将 Docker
可以类比于 VMware
,如果开发想要在生产环境运行,则直接将本地应用及所需要的环境打包成一个镜像,将镜像运行在 Docker 中,这样就可以解决测试环境和生产环境不一致的问题。(镜像可以类比我们常见的ubuntu.ios
镜像文件。)
为了从根本上解决开发和运维环境不一致的问题。也就是说,在安装时,把原始环境一模一样地复制过来,开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作
”的问题。
开发在打包应用时,将应用所需要的文件打包成一个镜像文件,将镜像运行在docker中。从而达到一次镜像,处处运行。
可以一句话概括为:解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
图片来源于官网 https://www.docker.com/resources/what-container/
左图是 Docker 容器架构,右侧是传统虚拟机架构。
Infrastructure
可以看做是宿主机,Hypervisor
可以看做是VMware。
Docker 容器架构直接在宿主机上运行,而传统虚拟机需要在宿主机中安装一个虚拟机,然后在虚拟机中机型部署。Docker 与传统虚拟机具体比较内容如下:
当被问:为什么Docker比VM虚拟机快???可以从以下两方便回答。
当我们安装一个虚拟机的时候,需要有一个.ios镜像文件,说的是一个意思,所以可理解为镜像是一个只读文件。当然镜像也是创建 Docker 容器的基础。
容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除。也可以把容器看做一个简易版的 Linux 系统
仓库是集中存放镜像文件的地方,我们可以把镜像发布到仓库中,需要的时候再从仓库中拉下来。仓库分为公开仓库和私有仓库。
最大的公开仓库是 Docker Hub,国内的公开仓库包括阿里云、网易云等。
Mac 中安装 Docker 十分简单,在此不做赘述。可以参考官网提供的步骤https://docs.docker.com/get-docker/
注意:Docker 并非是一个通用的容器工具
,它依赖于已存在并运行的 Linux 内核环境。也就是说,如果想在 windows 上部署 Docker,需要先安装一个虚拟机,并在安装一个linux操作系统。在安装linux系统的虚拟机中运行 Docker。
首先登录阿里云平台https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
在产品与服务——容器镜像服务——创建个人版实例,点击镜像加速器。复制加速器地址。
不同平台配置方法不同,下面以 Mac 为例。
在任务栏点击 Docker Desktop 应用图标 -> Perferences,在左侧导航菜单选择 Docker Engine,在右侧输入栏编辑 json 文件。将加速器地址写到"registry-mirrors"的数组里,点击 Apply & Restart按钮,等待Docker重启并应用配置的镜像加速器。
使用命令 docker info 检查配置是否生效
docker info
本章主要介绍了Docker的基本概念、Docker 容器和传统虚拟机的区别、阿里云镜像加速配置等,总结 Docker 容器的优势有以下几点。(以下内容来源于《Docker技术入门与实战》)