文章目录
一、Docker基础篇
1、什么是Docker?
Docker是PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言
并遵从Apache2.0协议
开源。最初实现是基于LXC,从0.7
以后开始去除LXC,转而使用自行开发的libcontainer,从1.11
开始,则进一步演进为使用runC和containerd。
Docker 容器可以快速自动化地部署应用,并通过操作系统内核技术(namespaces、cgroups等)
为容器
提供资源隔离与安全保障。Docker 作为轻量级的虚拟化方式,实现了PaaS平台高效部署、运行和维护。
Docker是完整的一套容器管理系统。Docker提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核技术。
2、容器与虚拟机
我们先区分两个概念:容器与虚拟机。
很多人都用过虚拟机,我们用的传统虚拟机如 VMware 都需要模拟整台机器包括硬件。每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。每台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。 传统虚拟机技术
是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程
容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。
容器在宿主机操作系统中,在用户空间以分离的进程
运行。容器技术是实现操作系统虚拟化的一种途径
,可以让您在资源受到隔离的进程中运行应用程序及其依赖关系。
Docker 属于Linux容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
容器不是模拟一个完整的操作系统,而是对进程进行隔离,相当于是在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。
Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker ,就不用担心环境问题。
总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
3、Docker 的优势(为什么使用docker)
-
Docker 启动快速属于秒级别。虚拟机通常需要几分钟去启动。
-
Docker 需要的资源更少。Docker 在
操作系统级别
进行虚拟化,Docker 容器和内核交互,几乎没有性能损耗,性能优于通过 Hypervisor 层(一种运行在基础物理服务器和操作系统之间的中间软件层)与内核层的虚拟化。 -
Docker 更轻量,更高效的系统资源利用。Docker 的架构可共用一个内核与共享应用程序库,所占内存极小。同样的硬件环境,Docker 运行的镜像数远多于虚拟机数量,对系统的利用率非常高。
-
一致的运行环境。由于开发环境、测试环境、生产环境不一致,会导致有些bug并未在开发过程中被发现。应用运行环境一致,就不会再出现“这段代码在我机器上没问题啊”这类问题。
-
持续交付和部署。对开发和运维&#