linux工程师,RHCE
分类: 系统运维
2021-04-08 13:36:54
浅析linux容器--Docker
最近公司调整微服务架构,有幸开始接触到Docker,刚开始接触到docker的时候我去简单的百度了下docker容器,了解到docker属于linux容器中的一种,通过docker,容器发展成为一种优秀的工具。今天就目前所掌握的关于Docker的应用作个简短总结,在帮助自己巩固知识点的同时希望能够帮助到大家。
一、虚拟化技术
1. 为什么要使用虚拟化技术
虚拟化技术可以合理、高效利用资源、节省成本。比如在双十一购物节,天猫、淘宝、京东等各大购物网站业务剧增,相对应支撑这些业务的后台服务器需求量也会大幅增加,而在淡季,业务相对会减少很多,相应地服务器压力也会降低。为了不造成资源浪费,使用虚拟化技术就可以达到动态合理分配资源的目的。
2. 传统的虚拟化技术(主机级虚拟化)
传统地虚拟化技术分为两种类型:一种是在硬件设备层(宿主机)上直接模拟,从而实现多个操作系统;一种是在宿主机上运行VMware,然后在VMware是运行客户机,客户机再对底层设备进行调用,比如CPU,内存,磁盘等硬件资源。
3. 系统级虚拟化技术(容器级虚拟化技术)
容器级虚拟化既没有宿主机,也没有虚拟机管理器,虚拟机和虚拟机之间共享内核,无需模拟硬件层,同时在操作系统的内核上,允许多个隔离的用户空间。这就类似于小明同学有一天非常想同时吃炸土豆片,炸薯条和炸丸子,怎么办呢?一种方法是他买3口同样大小的锅,同时进行,但是很明显这种方法会造成资源的浪费,另外一种方法就是买一口带有2个隔层的大锅,且每个隔层的面积大小不一,这样就可以根据自己的喜好炸出自己喜欢吃的炸土豆片,炸薯条和炸丸子,吃的多就放在面积稍大的隔层里,吃的少就放在面积稍小的隔层里,既不会造成资源浪费,也合理利用了空间。
4. Container的核心技术
CGroup:限制资源的使用情况,比如调度多少个CPU,占用多大的内存等。
NameSpace:在创建新进程时候加了一个可选参数PID,然后利用 Linux 系统调用 克隆方法为其新创建的进程指定一个新的PID 参数,那么新创建的进程就会看到一个全新的进程空间,也就是对应的PID参数。Namespace 除了可以模拟 PID 之外,还提供了 Mout、UTS、IPC、Network 和 User 等,在不同的进程上下文做隔离操作。
Chroot:对文件系统进行隔离
二、Docker介绍
1. 什么是容器?
水杯是一个用来装水的容器,果篮是用来装水果的容器,同理,Docker是用来装应用程序的容器,比如我们熟悉的MySQL,Nginx等。
2. 什么是Docker?
Docker是用来创建、部署、运行应用程序的工具,比如当前热门的微服务,CI/CD。
3. 为什么要使用Docker?
Docker容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。正是由于这种技术的优点,Docker在开发、测试、运维都有广泛的应用。在开发领域,会使用Docker搭建开发环境;在测试领域,会使用Docker搭建测试环境,比如对测试用例进行管理的禅道系统,对多版本测试,对应多套测试环境,如果使用Docker,就可以在一套环境上启用不同的Docker就可以达到目的;在运维领域,分配网络资源,搭建监控系统,备份系统等都可以使用Docker。
三、安装Docker
在不同的操作系统上安装Docker方法是不一样的,这个大家可以自己使用的操作系统自行搜索安装方法。
四、Docker的基本操作
1. Docker image
列出镜像:docker images
下载镜像:docker pull
删除镜像:docker rmi 镜像名称
查看镜像详细信息:docker ps -a
2. Docker Container
运行容器:docker run -it
列出容器:docker container ls
查看容器的进程和资源利用情况:docker ps -a
停止/开启容器:docker start/stop <容器ID>
删除容器:docker rm -f <容器ID>
五、Docker应用场景
1. 快速部署
在使用虚拟化技术,硬件资源的更换需要几天时间,虚拟化技术将这个时间缩短到几分钟,自从引进Docker技术,这个操作可以控制在几秒钟。
2. 简化配置
虚拟机最大的好处是可以在同一个宿主机上运行各种不一样的操作系统,而Docker可以将运行环境和配置放在代码中然后运行,降级硬件和应用环境的关联性。
3. 隔离应用和整合服务
由于Docker应用既没有宿主机,也没有虚拟机管理器,虚拟机和虚拟机之间共享内核,无需模拟硬件层,同时在操作系统的内核上,允许多个隔离的用户空间,这种隔离应用的能力使得docker可以整合多个服务以降低成本。
当然Docker的应用场景还有很多,比如多租户环境,调试能力等,这里就不一一介绍了。今天能接触到Docker,还得力于这本书,是它让我接触并体验到虚拟化技术,这本书通俗易懂,很适合入门,有需要的同学可以自行查阅。