浅析linux容器--Docker

linuxprobe2020 2021-04-08 09:09:45
docker linux Mysql nginx VMware


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

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

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

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

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

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

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

  1. Container的核心技术

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

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

Chroot:对文件系统进行隔离

 

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

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

  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就该这么学》这本书,是它让我接触并体验到虚拟化技术,这本书通俗易懂,很适合入门,有需要的同学可以自行查阅。

版权声明
本文为[linuxprobe2020]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4331421/blog/5011670

  1. 绕开Docker Hub下载限制:JFrog Artifactory
  2. springboot exception handle
  3. TIOBE 11 月编程语言:Java 首次跌出前二;基于Pytorch的Kornia可微分计算机视觉库开源
  4. 使用docker-maven-plugin部署SpringBoot应用
  5. Docker(应用容器引擎)的安装与基本操作——Docker系列文章(一)
  6. 年轻人的第一个 Docker 应用,大大提高生产力!
  7. Docker极简学习(一)
  8. java并发编程的艺术
  9. Docker入门简介
  10. Docker 零基础从入门到使用
  11. 解决docker kubernetes一直处于starting状态问题
  12. 理解,docker (容器),
  13. Docker总结整合(一)
  14. 年轻人的第一个 Docker 应用,大大提高生产力!
  15. 技术选型之Docker容器引擎
  16. MyBatis 面试题(附答案解析)
  17. Docker这么火爆。章节一:带你详尽了解Docker容器的介绍及使用
  18. Kafka Stream 处理器API
  19. Docker简介
  20. 徐西宁: 码农小马与Docker不得不说的故事
  21. Docker的简介
  22. 使用Docker Swarm搭建分布式爬虫集群
  23. 使用Docker Swarm搭建分布式爬虫集群
  24. 大话Docker(五)普天同庆,Kubernetes决定弃用Docker - 知乎
  25. Docker 入门终极指南,别再说不会用Docker了
  26. 漫话docker的衰落与kubernetes的兴起
  27. Docker实践:python应用容器化
  28. JAVA期末实验:CSP 201809-4 原题
  29. Docker 学习笔记
  30. Docker 部署 React 全栈应用
  31. 从应用架构角度理解Docker
  32. Docker Desktop 3.0.0 正式版发布:开始支持补丁增量更新和为 Mac 的 M1 设备引入支持
  33. 向Docker告别的时候到了
  34. 向Docker告别的时候到了
  35. Docker 的 2020,实 '鼠' 不易!
  36. Docker 的第二次死亡
  37. docker基本使用
  38. Docker 的 2020,实 '鼠' 不易!
  39. Docker 镜像加速配置实践
  40. Intellij IDEA 解决了 Java 8 数据流问题,不愧是最智能的 Java IDE!
  41. Windows 10 将 Docker Desktop for Windows(WSL 2 方式)文件存储移出C盘放置到其它目录
  42. .NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ Masstransit 异常处理)--学习笔记
  43. Docker 极简入门指南,10 分钟就能看懂
  44. Docker简介
  45. 没搞清楚网络I/O模型?那怎么入门Netty
  46. Java API 操作Docker示例
  47. 给新手的 11 个 Docker 免费上手项目
  48. Docker 极简入门教程
  49. 什么是Docker?为何越来越多用户喜欢
  50. Java语法糖详解
  51. Docker系列(一)Docker概述,核心概念讲解,安装部署
  52. JD价格监控【docker版】
  53. 万字长文!入门 Docker , 这一篇就够了
  54. 两小时入门 Docker
  55. 构建Docker私有仓库
  56. 基于url-to-pdf-api构建docker镜像,制作一个网页另存服务
  57. 在Windows上安装Docker
  58. Docker虚拟化解析
  59. Java数据持久层
  60. Java数据持久层