惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Security Latest
Security Latest
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Stack Overflow Blog
Stack Overflow Blog
WordPress大学
WordPress大学
N
Netflix TechBlog - Medium
GbyAI
GbyAI
云风的 BLOG
云风的 BLOG
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
宝玉的分享
宝玉的分享
博客园 - 【当耐特】
C
Cyber Attacks, Cyber Crime and Cyber Security
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Threat Research - Cisco Blogs
NISL@THU
NISL@THU
Spread Privacy
Spread Privacy
P
Proofpoint News Feed
J
Java Code Geeks
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MyScale Blog
MyScale Blog
T
Tor Project blog
P
Proofpoint News Feed
C
CERT Recently Published Vulnerability Notes
P
Privacy & Cybersecurity Law Blog
MongoDB | Blog
MongoDB | Blog
Simon Willison's Weblog
Simon Willison's Weblog
C
Cybersecurity and Infrastructure Security Agency CISA
L
LINUX DO - 热门话题
小众软件
小众软件
G
GRAHAM CLULEY
P
Privacy International News Feed
AWS News Blog
AWS News Blog
Know Your Adversary
Know Your Adversary
P
Palo Alto Networks Blog
人人都是产品经理
人人都是产品经理
S
Schneier on Security
Scott Helme
Scott Helme
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
B
Blog RSS Feed
T
The Exploit Database - CXSecurity.com
Recent Announcements
Recent Announcements
E
Exploit-DB.com RSS Feed
C
CXSECURITY Database RSS Feed - CXSecurity.com
U
Unit 42
The Register - Security
The Register - Security
S
Securelist
Martin Fowler
Martin Fowler
Project Zero
Project Zero
大猫的无限游戏
大猫的无限游戏
Cisco Talos Blog
Cisco Talos Blog

博客园 - wenha

代码行统计工具 Linux之SSH远程登录 大模型基础(六):从聊天机器人到智能体-大模型的下一站 大模型基础(五):RAG入门-让大模型学会"开卷考试" 大模型基础(四):强化学习入门-从斯金纳箱到大模型推理 大模型基础(三):大模型是怎么炼成的-从预训练到强化学习的完整流程 数据库隔离级别 踩坑记录:UTF-8、UTF-8-BOM 与 GB2312 读取的乱码真相 大模型基础(二):必懂5大基础概念《Token、上下文窗口、Embedding、预训练、微调》 大模型基础(一):什么是LLM? 告别玄学调参:Agent 稳定落地的核心——Harness Engineering 体验优先:十分钟使用 Python+LangChain 玩转阿里通义千问 运维工具之Ansible详解(一) 运维工具之Ansible详解(二) 自建K8S集群认证过期 单点登录的设计与实现思路 (三)Dockerfile基础 (二)Docker镜像、容器、数据卷 Go语言学习笔记(四) Go语言学习笔记(三) Redis学习笔记(一)配置文件参数说明 Go语言学习笔记(二) CentOS上安装RabbitMQ CentOS上安装Redis NodeJS学习笔记(一) JavaScript的发展史 CentOS 7上安装MySQL 8 - wenha
(一)Docker简介
wenha · 2020-03-29 · via 博客园 - wenha

一、Docker是什么

1. 为什么会有Docker

​ 一款产品从开发到上线,从操作系统到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验。安装的时候,把原始环境一模一样地复制过来,开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题

2.Docker的理念

​ docker是基于GO语言实现的云开源项目。docker的主要目标是“build,ship and run APP,anywhere“也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP及用户环境能够做到”一次封装,到处运行“

3.总结

​ 解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

二、Docker能干什么

1.之前的虚拟技术

​ 虚拟机就是带环境安装的一种解决方案。它可以在一种操作系统中运行另一种操作系统,应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其它部分毫无影响。这类虚拟机完美的运行了另一套系统,能够使应用程序、操作系统和硬件三者之间的逻辑不变。

缺点:占用资源多、冗余步骤多、启动慢

2.容器虚拟化技术

​ 由于虚拟机存在的缺点,Linux发展出了另外一种虚拟化技术:Linux容器。Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。有了容器,就可以将软件所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一套操作系统,只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。

​ ①传统虚拟机是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程

​ ②容器内的应用进程直接运行于宿主内核,容器没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更加轻便

​ ③每个容器之间相互隔离,每个容器都有自己的文件系统,容器之间进程不会相互影响,能区分计算资源

3.开发、运维 DevOps

一次构建,随处运行

  • 更快速的应用交付和部署
  • 更便捷的升级和扩缩容
  • 更简单的系统运维
  • 更高效的计算资源利用

4.企业现象

​ 2020年春节疫情期间,全国各高校线上开学,各企业线上办公,流量每天呈指数激增,是对中国互联网人的一场技术大考验。一些在线产品在这期间保持了持续不断的十倍、几十倍的业务容量增长:钉钉8天扩容10万台服务器,腾讯在线会议紧急扩容100万核。整个系统需要的资源是超乎想象的,用最短的时间解决史无前例的问题,调动全公司的资源,把解决问题的时间缩短十倍。2月12日,钉钉宣布连续扩容10万台服务器,在疫情期间道路封闭、园区隔断、人员异地的条件下,阿里云完成了十万台服务器的调拨、打包、运输、调度、上架、发布。腾讯表示,带宽扩容需要三个月,但实际上我们只花了三天。这些我们甚至都不能想象的操作背后,离不开容器管理和自动化。

三、Docker安装

1、前提

  • CentOS Docker安装

    Docker支持以下的CentOS版本:CentOS 7(64-bit)、CentOS 6.5(64-bit)或更高版本

  • 前提条件

    目前,CentOS仅发行版中的内核支持Docker

    Docker运行在CentOS7上,要求系统为64位、系统内核版本为3.10以上

    Docker运行在CentOS 6.5或更高的版本上,要求系统为64位、系统内核版本为2.6.32-431或更高

  • 查看自己的内核

四、Docker原理

1.Docker是怎么样工作的

​ Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。容器,是一个运行时环境,就是所谓的“集装箱”

2、为什么Docker比VM快

​ 1)Docker有着比虚拟机更少的抽象层。由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上Docker将会在效率上有明显优势

​ 2)Docker利用的是宿主机的内核,而不需要Guest OS。因此,当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统内核。仍而避免引寻、加载操作系统内核等几个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个新建过程是分钟级别的。而Docker由于直接利用宿主机的操作系统,则省略了这个过程,因此新建一个Docker容器只需要几秒钟

Docker容器 虚拟机
操作系统 与宿主机共享OS 宿主机OS上运行虚拟机OS
存储大小 镜像小,便于存储与传输 镜像庞大(VMdk/vdi等)
运行性能 几乎无额外性能损失 操作系统额外的CPU、内存消耗
移植性 轻便、灵活、适用于Linux 笨重,与虚拟化技术耦合度高
硬件亲和性 面向软件开发者 面向硬件运维者
部署速度 快速、秒级 较慢,10s以上