Docker入门第一篇之Docker简介(精简版)

背景:
一款产品从开发到上线,从操作系统,到运行环境,再到应用配置,这是很多公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,都是我们开发运维人员的痛点。环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用运行在 Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。同时开发人员利用 Docker 就可以消除协作编码时“在我的机器上可正常工作”的问题。
在这里插入图片描述

简介:
Docker是基于Go语言实现的云开源项目。Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”。总而言之,Docker解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
在这里插入图片描述

为什么使用Docker
Linux 容器和传统虚拟化方式的对比:
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。
而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。

在这里插入图片描述
在这里插入图片描述

开发和运维:

(1) 更快速的应用交付和部署
(2) 更便捷的升级和扩缩容
(3) 更简单的系统运维
(4) 更高效的计算机资源利用
直接现实:

(1)公司开发环境硬件配置的限制,需要小而灵活的容器技术
(2)鉴于项目开发的初级阶段,利用容器技术可以大大减少因为开发环境配置问题的时间浪费,缩短开发周期。
(3)Docker是开源项目,免费,学习简单,很快就可以掌握

Docker基本组成
(1)镜像(image)
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器.
在这里插入图片描述

实质:UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。(不理解没关系,在Dockerfile篇将会有更好的理解)
(2)容器(container)
Docker 利用容器(Container)独立运行的一个或一组应用。
容器是用镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。我们可以把宿主机比作鲸鱼,容器就是鲸鱼背上的集装箱,在鲸鱼。
在这里插入图片描述

(3)仓库(repository)
仓库(Repository)是集中存放镜像文件的场所。
仓库(Repository)和仓库注册服务器(Registry)是有区别的(但是并不严格区分)。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云等。

在这里插入图片描述

Docker系统架构:
Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上, 然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/bin_bujiangjiu/article/details/108614820