Who?
docker适合谁?运维,和devops的开发。
Docker 开发方向:
语言:Golang
相关的技术:Swarm、Compose、Machine、mesos、k8s.....--- CI/CD Jeckins整合
WHY?
为什么要用docker?解决了什么问题?
开发与运维的矛盾:开发提交给运维代码、war包、jar包,开发本机一切安好;运维工程师部署发现不成功。
原因:环境和配置
如在windows开发,部署到ubuntu或者Centos上。
版本迭代,系统变得复杂,可能会持续带来类似问题。
解决思路:将开发工程师开发的环境 代码、配置、系统、数据等环境下整个都交给运维来跑。docker就做的是这件事情——软件+环境 安装。
运维安装的不再是软件,而是能够运行软件和环境的整个全家桶。
(本文出自oschina博主happyBKs的博文:https://my.oschina.net/happyBKs/blog/3010974)
另一个问题:大型分布式环境,每个ZK、redis、应用有多个节点,还有可能扩容,那部署和维护多个相同的软件运行环境非常痛苦。
解决思路:把代码、配置、环境、依赖等正确环境打一个包,叫做镜像,发布到多个节点。
What?
docker是什么?
docker的理念:一次构建处处运行。
解决了运行环境和配置问题的软件容器,方便持续集成并有助于整体发布的容器虚拟化技术。
虚拟机和容器:
虚拟机:启动慢,吃资源,冗余步骤多;捆绑一整套操作系统,虚拟一套硬件。
LXC :linux容器,不是模拟一个完整的操作系统,而是对进程进行隔离。内核要,其他不相关的不要。将软件所需的所有打包到一个隔离的容器当中。容器和虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需要的库资源和设置。高效、轻量。
Docker和传统虚拟化技术的不同之处:
传统的虚拟机技术是虚拟一套硬件之后,在其上运行一个完整的操作系统,在该系统上运行所需要的应用进程。
而容器内的应用进程直接运行于宿主内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
每个容器之间互相隔离,每个容器有自己的容器系统,容器之间进程不会互相影响,能区分计算资源。
不严格的说,docker可以认为是一个精简版、超小型linux系统虚拟机。
docker发布一个镜像运行即可,使得dev/ops的理念的出现,运维同志们当心被优化噢:)
docker你该知道的杂项
Docker是2014年出现,2017年开始火爆。
Docker支持的系统和版本要求:
Centos必须6.5及以上版本。
centos7以上,要求64位操作系统、系统内核版本3.10以上。
centos6.5以上或者更高版本的Centos上,要求64位、系统内核版本2.6.32-431或者更高版本。
neil@linux-famw:~> uname -r
4.12.14-lp150.12.45-default
windows也可以使用docker。
Docker的架构和三要素
Docker的三要素:镜像、容器、仓库
docker的架构图:
三要素的关系
image镜像 可以看作是类。
container容器可以看作是实例。
container容器是image镜像的实例。
docker的logo是一个鲸鱼一样的船载满了很多集装箱。
集装箱就是container容器。
鲸鱼就是docker。
docker镜像是一个只读的模板,镜像可以用来创建docker容器,一个镜像可以创建很多个docker容器(就像一个类可以有很多个实例一样)
image镜像可以注册在仓库注册服务器Registry。需要的时候pull下来使用。
仓库Repository和仓库注册服务器Registry是有区别的。
仓库Repository 是集中存放镜像文件的地方。
库注册服务器Registry上往往存放着很多仓库仓库Repository,每个仓库中又包含了很多个image镜像。每个image镜像有不同的标签tag。
仓库又分为 公开仓库public和私有仓库private。
最大的公开仓库 dokcer hub:https://hub.docker.com/
但是和maven中央仓库、pip仓库一样,老外的仓库与我朝有着网速的限制。一般还是用国内的。
国内的docker公开仓库有:阿里云、网易云
而这种承担了docker 公开仓库功能的网站,我们称之为 docker 镜像站。
总结
Docker利用容器container独立运行一个或一组应用。容器是用镜像创建的实例。它尅被启动、开始、停止、删除。每个容器都是互相隔离、保证安全的平台。
Docker本身是一个容器运行载体,是一个容器管理引擎。
我们把应用、配置、依赖打包好,形成一个可交付的运行环境,这个打包好的运行环境就是镜像文件。只用通过镜像文件才能生成docker容器。镜像文件可以看作是容器的模板。同一个镜像文件可以生成多个同时运行的容器实例。
一个容器运行一种服务,比如redis服务、mysql服务、tomcat服务。当我们需要这个服务的时候,就用docker客户端创建一个对应的运行实例,这就是容器。
Where
下载安装:
官方文档:https://docs.docker.com/install/
centos、ubuntu、windows、mac os等都有。
官网没有suse的docker安装方法,但可以参考我自己之前的博客文章《固态硬盘排名 Docker在opensuse leap15.0安装手册(HappyBKs特供白白》
docker6安装的是docker io
7之后安装的该叫docker ce
ce的意思是社区版。