Docker简介
docker简介
前置知识
- Linux命令
- git
- Docker相关开发语言和技术
- Swarm
- Compose
- Mesos
- Machine
- k8s
- CI/CD Jenkins整合
是什么
Docker 使用 Google
公司推出的 Go 语言 进行开发实现,基于 Linux
内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7
版本以后开始去除 LXC
,转而使用自行开发的 libcontainer,从 1.11
版本开始,则进一步演进为使用 runC 和 containerd。
问题:为什么会有Docker出现
- 开发和运维环境的差异导致部署失败
出于高并发以及快速响应的需要,系统新功能需要快速上线(秒级)
- 软件可以带环境安装
- 安装的时候,把原始环境一模一样地复制过来
开发人员利用Docker可以消除协作编码时“在我的机器上可以正常工作”的问题
Docker理念
- 打破代码即应用的理念,变成镜像即应用
一次构建,处处运行
一句话
- 是解决了运行环境和配置问题的软件容器,是方便做持续集成并有助于整体发布的容器虚拟化技术
能干嘛
之前的虚拟机技术
- 虚拟机是带环境安装的一种解决方案
- 它可以在一种操作系统里面运行另一种操作系统,应用程序对此毫无感知。虚拟机看上去跟真实系统完全一样,对于底层系统来说,虚拟机就是一个普通文件,不需要就可以删除。
这类虚拟机完美地运行了另一套系统,能够使应用程序、操作系统和硬件三者之间的逻辑不变 - 缺点:
- 资源占用多
- 冗余步骤多
- 启动慢
容器虚拟化技术
Linux发展了另一种虚拟化技术,LXC
Linux容器不是模拟一个完整地操作系统,而是对进程进行隔离
容器和虚拟机不同,不需要捆绑一个完整的操作系统,只需要软件工作所需要的库资源和设置重点就是容器是共用操作系统内核的,不进行硬件虚拟
每个容器是相互隔离的,每个容器都有自己的文件系统,容器之间进程不会相互影响,能够区分计算资源
开发/运维(DevOps)
- 开发自运维
- 一次构建,随处运行
一次构建是指开发工程师做一次构建
无需运维工程师再做构建
随处运行是指对于这个构建的交付物,可以随处运行- 更快捷的应用交付和部署
- 更便捷的升级和扩缩容
- 更简单的系统运维
- 更高效的计算资源利用
企业级
去哪下
官网
- docker官网:http://www.docker.com
- docker中文网站:https://www.docker-cn.com
仓库