晚上要好好睡觉,我想你了
转自:https://blog.csdn.net/qq_43371556/article/details/102631158
诞生背景
一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。
作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,
特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验 .
Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案。
环境配置如此麻烦,换一台机器,就要重来一次,费力费时。
很多人想到,能不能从根本上解决问题,软件可以带环境安装?
也就是说,安装的时候,把原始环境一模一样地复制过来。
开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。
开发需要清楚的告诉运维部署团队,用的全部配置文件+所有软件环境。
不过,即便如此,仍然常常发生部署失败的状况。
Docker镜像的设计,使得Docker得以打破过去"程序即应用" 的观念。
透过镜像(images)将作业系统核心除外,运作应用程式所需要的系统环境,
由下而上打包,达到应用程式跨平台间的无缝接轨运作。
Docker 介绍
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,
也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,
使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”。
Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。
将应用运行在 Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,
这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好, 大大简化了操作
总结:
Docker是解决运行环境和配置问题的软件容器 , 方便做持续集中并有助于整体发布的容器虚拟化技术
虚拟机技术与容器虚拟化技术
虚拟机技术
虚拟机(virtual machine)就是带环境安装的一种解决方案。
它可以在一种操作系统里面运行另一种操作系统,比如在Windows 系统里面运行Linux 系统。
应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样
缺点 :1 资源占用多 2 冗余步骤多 3 启动慢
容器虚拟化技术
Linux 容器(Linux Containers,缩写为 LXC)。
Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。
有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。
容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。
系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。
二者区别
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;
而容器内的应用进程直接运行于宿主机( 即:所在主机,下面统称宿主机 ) 的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。
官方网址
官方网址 : https://www.docker.com
Docker社区官方:https://hub.docker.com/
第二章 Docker安装
Docker支持以下的CentOS版本:CentOS 7 (64-bit) ,CentOS 6.5 (64-bit) 或更高的版本
前提条件
目前,CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。
# 查看内核版本
uname -r
1
2
安装Docker
Docker安装教程(CentOS 7)本人安装成功
Docker安装教程(CentOS 6)
Docker管理命令
# 重新载入后台启动进程
systemctl daemon-reload
# 启动docker容器 ,每次关闭虚拟机/运服务器时需要启动( 重要!!! )
sudo service docker start
# 查看Docker容器状态
sudo service docker status (should see active (running))
# 运行hello-world镜像/测试Docker是否可以使用
sudo docker run hello-world
1
2
3
4
5
6
7
8
9
10
11
Docker底层原理
Docker结构图
工作原理
Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,
然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。
容器,是一个运行时环境,就是我们前面说到的集装箱。
Docker为什么比VM快
(1) docker有着比虚拟机更少的抽象层。
由亍docker不需要Hypervisor实现硬件资源虚拟化,
运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。
因此在CPU、内存利用率上docker将会在效率上有明显优势。
(2) docker利用的是宿主机的内核,而不需要Guest OS。
因此,当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。
因而避免引寻、加载操作系统内核返个比较费时费资源的过程,
当新建一个虚拟机时,虚拟机软件需要加载Guest OS,返个新建过程是分钟级别的。
而docker由于直接利用宿主机的操作系统,则省略了返个过程,因此新建一个docker容器只需要几秒钟。
通过下图着重了解二者的比较( 图很重要!!!)