浅析linux容器--Docker

Linux就该这么学 2021-04-08 09:00:28
docker linux Mysql nginx VMware


最近公司调整微服务架构,有幸开始接触到Docker,刚开始接触到docker的时候我去简单的百度了下docker容器,了解到docker属于linux容器中的一种,通过docker,linux容器发展成为一种优秀的工具。今天就目前所掌握的关于Docker的应用作个简短总结,在帮助自己巩固知识点的同时希望能够帮助到大家。

  • 虚拟化技术
  1. 为什么要使用虚拟化技术

虚拟化技术可以合理、高效利用资源、节省成本。比如在双十一购物节,天猫、淘宝、京东等各大购物网站业务剧增,相对应支撑这些业务的后台服务器需求量也会大幅增加,而在淡季,业务相对会减少很多,相应地服务器压力也会降低。为了不造成资源浪费,使用虚拟化技术就可以达到动态合理分配资源的目的。

  1. 传统的虚拟化技术(主机级虚拟化)

传统地虚拟化技术分为两种类型:一种是在硬件设备层(宿主机)上直接模拟,从而实现多个操作系统;一种是在宿主机上运行VMware,然后在VMware是运行客户机,客户机再对底层设备进行调用,比如CPU,内存,磁盘等硬件资源。

  1. 系统级虚拟化技术(容器级虚拟化技术)

容器级虚拟化既没有宿主机,也没有虚拟机管理器,虚拟机和虚拟机之间共享内核,无需模拟硬件层,同时在操作系统的内核上,允许多个隔离的用户空间。这就类似于小明同学有一天非常想同时吃炸土豆片,炸薯条和炸丸子,怎么办呢?一种方法是他买3口同样大小的锅,同时进行,但是很明显这种方法会造成资源的浪费,另外一种方法就是买一口带有2个隔层的大锅,且每个隔层的面积大小不一,这样就可以根据自己的喜好炸出自己喜欢吃的炸土豆片,炸薯条和炸丸子,吃的多就放在面积稍大的隔层里,吃的少就放在面积稍小的隔层里,既不会造成资源浪费,也合理利用了空间。

  1. Container的核心技术

CGroup:限制资源的使用情况,比如调度多少个CPU,占用多大的内存等。

NameSpace:在创建新进程时候加了一个可选参数PID,然后利用 Linux 系统调用 克隆方法为其新创建的进程指定一个新的PID 参数,那么新创建的进程就会看到一个全新的进程空间,也就是对应的PID参数。Namespace 除了可以模拟 PID 之外,还提供了 Mout、UTS、IPC、Network 和 User 等,在不同的进程上下文做隔离操作。

Chroot:对文件系统进行隔离

 

  • Docker介绍
  1. 什么是容器?

水杯是一个用来装水的容器,果篮是用来装水果的容器,同理,Docker是用来装应用程序的容器,比如我们熟悉的MySQL,Nginx等。

  1. 什么是Docker?

Docker是用来创建、部署、运行应用程序的工具,比如当前热门的微服务,CI/CD。

  1. 为什么要使用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

  1. Docker Container

运行容器:docker run -it

列出容器:docker container ls

查看容器的进程和资源利用情况:docker ps -a

停止/开启容器:docker start/stop <容器ID>

删除容器:docker rm -f <容器ID>

  • Docker应用场景
  1. 快速部署

在使用虚拟化技术,硬件资源的更换需要几天时间,虚拟化技术将这个时间缩短到几分钟,自从引进Docker技术,这个操作可以控制在几秒钟。

  1. 简化配置

虚拟机最大的好处是可以在同一个宿主机上运行各种不一样的操作系统,而Docker可以将运行环境和配置放在代码中然后运行,降级硬件和应用环境的关联性。

  1. 隔离应用和整合服务

由于Docker应用既没有宿主机,也没有虚拟机管理器,虚拟机和虚拟机之间共享内核,无需模拟硬件层,同时在操作系统的内核上,允许多个隔离的用户空间,这种隔离应用的能力使得docker可以整合多个服务以降低成本。

当然Docker的应用场景还有很多,比如多租户环境,调试能力等,这里就不一一介绍了。今天能接触到Docker,还得力于《Linux就该这么学》这本书,是它让我接触并体验到虚拟化技术,这本书通俗易懂,很适合入门,有需要的同学可以自行查阅。

 

 

版权声明
本文为[Linux就该这么学]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/3585265/blog/5011664

  1. Spring Boot 中如何统一 API 接口响应格式?
  2. 深入分析 SpringMVC 参数解析器
  3. SpringBoot 中如何自定义参数解析器?
  4. SpringMVC 初始化流程分析
  5. 如何优雅的实现 Spring Boot 接口参数加密解密?
  6. Spring5 里边的新玩法!这种 URL 请求让我涨见识了!
  7. SpringMVC 中的参数还能这么传递?涨姿势了!
  8. 手把手教你开发 MyBatis 插件
  9. 细品 Spring Boot+Thymeleaf,还有这么多好玩的细节!
  10. Spring Boot 日志各种使用姿势,是时候捋清楚了!
  11. Deep analysis of viewresolver of nine components of spring MVC
  12. In depth analysis of handleradapter of nine components of spring MVC
  13. In depth analysis of handlermapping of nine components of spring MVC
  14. Can spring boot define interface methods to be declared private?
  15. Dispatcherservlet of spring MVC source code analysis
  16. Framework servlet for spring MVC source code analysis
  17. How to unify API response format in spring boot?
  18. In depth analysis of spring MVC parameter parser
  19. How to customize parameter parser in springboot?
  20. Analysis of spring MVC initialization process
  21. How to realize encryption and decryption of spring boot interface parameters gracefully?
  22. A new way to play in spring 5! This kind of URL request makes me see better!
  23. Can parameters in spring MVC be passed like this? It's up!
  24. Hand in hand to teach you how to develop mybatis plug-ins
  25. Fine spring boot + thymeleaf, there are so many fun details!
  26. Spring boot logs all kinds of posture, it's time to clear!
  27. Web 3.0踏浪而来,分布式存储举足轻重|时空云邀请您参加Web3.0中国峰会暨分布式存储行业大会
  28. spring-aop 进不了切面方法的解决办法
  29. Web 3.0 is coming, distributed storage is very important | spatiotemporal cloud invites you to attend Web3.0 China Summit and distributed storage industry conference
  30. The solution of spring AOP can't enter the section method
  31. Linux中如何启用root用户
  32. How to enable root in Linux
  33. 踩坑 MySQL 索引,看看你真的会用吗?
  34. Hive优化之配置参数的优化(一)
  35. Step on the MySQL index to see if you really know how to use it?
  36. Optimization of configuration parameters for hive optimization (1)
  37. Linux入门教程资料分享
  38. Introduction to Linux
  39. 外部连接mysql docker容器异常
  40. Exception of external connection MySQL docker container
  41. Zookeeper分布式锁?
  42. Zookeeper distributed lock?
  43. 嵌入式Linux_Framebuffer_03点阵显示ASCII字符串
  44. 嵌入式Linux_Framebuffer_02字符编码
  45. Embedded Linux_ Framebuffer_ 03 dot matrix display ascii string
  46. Embedded Linux_ Framebuffer_ 02 character encoding
  47. Looking forward to new product launch of Xiaomi in spring CNMO takes you to see 11 new products in advance
  48. An inventory of the commonly used garbage collectors in Java
  49. Why is it so easy to get started with HBase?
  50. Implementation of PRC framework based on netty
  51. 2021 Java back end engineer must know knowledge - (Dubbo, distributed RPC framework)
  52. 关于spring advisor和元数据 同时来管理事务的问题
  53. How to manage transactions with spring advisor and metadata at the same time
  54. 使用Playwright对Java API实现自动视觉测试 - applitools
  55. Using playwright to implement automatic visual testing for Java API - applitools
  56. Dubbo和Spring cloud、Istio对比图
  57. Comparison of Dubbo with spring cloud and istio
  58. HttpServletRequest、通过request获得请求头、请求体等、解决中文乱码等问题
  59. Mybatis学习笔记-一对一,一对多,多对多关联查询
  60. Mybatis学习笔记-基本概念与操作