前言
记录时间 [2024-4-5]
在先前的文章中,笔者进行了Windows
系统下YOLOv8
模型的简单测试,并由此引发思考:是否能尝试将此模型运行在Linux
中呢?又或者,运行在Docker
中。关于Docker
的学习就这么展开了。
本文便是有关Docker
入门的开篇之作,进行Docker
概述,期待读者能够从一无所知到对Docker
有一个初步的认识。
文章为零基础学习Docker
做了一些准备:
Docker
学习视频(狂神说系列)Docker
官方文档(官方文档超级详细)Docker
远程仓库(相当于镜像商店)
Docker 概述
那么,Docker
为什么会出现呢?
相信大家对于环境这个词一定很熟悉吧,开发的项目需要在特定的环境中运行,而有些环境的配置极其复杂,给运维造成一定的困难。而Docker
,就是解决问题的关键所在。
Docker
是一个开源
的应用容器引擎,基于Go语言
开发,其核心思想在于隔离
,即:将项目+它所需要的运行环境打包安装在各自的箱子里,每个箱子互相隔离。
Docker
通过隔离机制,能极大提升服务器的利用率。
Docker
广泛运用于开发和运维,能很好地解决环境搭建的麻烦,避免多个应用端口冲突。通过下载发布的镜像,几乎能实现一套流程完成“开发、打包、部署、上线”。
Docker 历史
2010 年,Solomon Hykes
和朋友们在美国旧金山成立了一家公司dotCloud
,最初主要提供基于LXC (Linux Container)
的PaaS
云计算服务。他们将自己的技术,即容器化技术,命名为Docker
。
然而,在诞生之初,Docker
并没有引起行业的注意,直到 2013 年,Docker
开源,开源当月发布了Docker 0.1
版本,此后每个月Docker
都会更新一个版本。后来,越来越多的使用者发现了它的优点,于是它火了。
2014 年 6 月 9 日,Docker 1.0
版本正式发布!
Docker 优势(对比虚拟机)
Docker
为什么会这么火?因为它十分轻巧。
纵观虚拟化技术的发展,在Docker
容器技术问世前,虚拟机技术的使用占主导。在Windows
操作系统中安装Vmware
软件,再由该软件虚拟出一台或多台电脑(Linux Centos
原生镜像),这些虚拟出来的电脑即为虚拟机。而一台虚拟机的内存往往占好几个G
,运行起来非常笨重,更何况实现隔离需要开启多个虚拟机。
如图,图片来源,VM
会模拟出一台完整的电脑,造成了资源和内存的浪费。而Docker
每个项目运行在单独的容器里,且容器直接运行在OS
之上。容器化技术不是模拟一个完整的操作系统。
Docker
的抽象层比VM
少,运行比VM
快。
虚拟机技术缺点:
- 资源占用多
- 冗余步骤多
- 启动很慢
Docker
和虚拟机技术的不同之处:
- 传统虚拟机,虚拟出一套硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件。
- 容器内的应用直接运行在宿主机的内核,容器没有自己的内核,也没有虚拟硬件,因此十分轻巧。
- 不同容器之间互相隔离,每个容器内都有一个属于自己的文件系统,互不影响,因而安全。
虚拟化技术 | 镜像 | 实现隔离 | 内存 | 启动时间 |
---|---|---|---|---|
VM | Linux Centos 原生镜像(一个电脑) | 需要开启多个虚拟机 | G 级别 | 分钟级 |
Docker | 镜像(最核心的环境) | 运行镜像即可 | M 级别 | 秒级 |
我们将容器技术与虚拟机技术进行对比,不难看出,Docker
容器技术的优势明显。可以说,开发人员需要掌握这项技术。
Docker 作用(能干嘛)
DevOps
(开发、运维)
更快速的应用交付和部署
- 传统:一堆帮助文档,安装程序;
Docker
:打包镜像发布测试,一键运行。
更便捷的升级和扩缩容
- 使用
Docker
之后,可以将应用部署到多个容器中; - 一个服务器上能运行多个容器,容器之间可以交互;
- 方便应用升级和扩展。
更简单的系统运维
- 保证开发/测试环境的高度一致。
更高效的资源利用
Docker
是内核级别的虚拟化,在一个物理机上可以运行多个容器实例,服务器的性能可以被压榨到极致。
Docker 基本组成
如图(图片来源网络),Docker
由客户端、服务器,和远程仓库三部分组成,在Docker
守护进程中包含镜像和容器,一个镜像可以运行在多个不同的容器中。基本过程:客户端启动Docker
服务,去远程仓库拉取镜像,然后运行在容器中。
镜像image
Docker
镜像类似于模板,通过这个模板可以创建容器服务。如:tomcat
镜像 ==>run
==>tomcat01
容器(容器提供服务)- 通过这个镜像可以创建多个容器,最终服务/项目运行在容器中。
容器container
- 容器相当于一个简易的
Linux
系统; - 通过镜像来创建容器,在容器中可独立运行一个/一组应用;
- 基本命令:启动/停止/删除…
仓库repository
- 仓库是存放镜像的地方,分为公有仓库和私有仓库;
- 默认是国外的:
Docker Hub
; - 配置镜像加速:阿里云容器服务。
总结
本文进行了Docker
概述,介绍其历史、优势、作用,以及基本组成。通过此,相信大家对Docker
有了一个初步的认识。接下来就进入Docker
的安装和基本命令使用了。
一些参考资料
狂神说系列Docker
教程:https://www.bilibili.com/video/BV1og4y1q7M4/
Docker
官网:https://www.docker.com/
Docker
官方文档:https://docs.docker.com/engine/install/centos/
Docker
远程仓库:https://hub.docker.com/