初识docker

参考视频:尚硅谷_Docker核心技术(基础篇)_哔哩哔哩_bilibili

docker官网:Home - Docker

为什么会出现docker?

--在开发和运维合作时,可能会出现一种情况是开发人员在本地运行项目一切正常,但是将项目打成war包给运维部署时运行不成功这个时候就会导致开发和运维相互甩锅。导致运行效果不同的一个原因就是环境和配置的不同,比如开发人员是在windows环境运行的,而运维是在linux系统上部署的,或者是某个配置出现差异。Docker便可以解决此问题:也就是开发人员将代码、配置、系统等等一系列可以在自己电脑上正常运行的整个一套方案全部给运维,而不是只把代码给运维还要让运维自己配置一堆东西。可以理解为原来的情况是一锅饭里,只把饭给了运维,运维自己拿锅重新加热。用了docker之后就是直接连锅带饭一起给运维,运维就直接加热食用即可。

docker镜像的设计,使得docker得以打破过去“程序即应用”的观念。透过镜像(images)将作业系统核心除外,运作程序时所需要的系统环境,由下而上打包,达到应用程序式跨平台间的无缝接轨运作。

docker是基于go语言实现的云开源项目。

docker的主要目标是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的应用及其运行环境能够做到“一次封装,到处运行”。

docker的logo:

一只鲸鱼背上放了几个集装箱,在应用中我么可以理解为一个项目中假设需要用到redis,nginx,mysql等这三个软件,为了避免版本差异引起部分功能无法使用,开发人员可以将这三个软件放到三个集装箱中,然后把集装箱放在一个镜像中,运维人员只需要去操作docker中的镜像即可。

docker与传统虚拟化方式的不同之处:

1.传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。

2.而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

3.每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。

docker可以看作是一个精简版的linux系统,只占用170兆,而centos则要占用4g。

docker的基本组成:镜像、容器(集装箱)、仓库。

镜像是一个只读模板,可以用来创建docker容器,一个镜像可以创建很多容器。

容器是用镜像创建的运行实例,基于一个镜像可以创建多个容器。

可以将镜像解为java中的一个类,这个类可以产生多个对象,也即容器可以理解为实例(对象)。

容器是一个精简版的linux系统,并在其上运行了应用程序(如redis等),一个容器可以看做是一个集装箱。

仓库是集中存放镜像文件的场所。仓库注册服务器上存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(类似于版本号)。仓库分为公开仓库和私有仓库。最大的公开仓库是https://hub.docker.com/,存放了很多镜像供用户下载,但由于它是国外网站,下载速度非常慢,所以一般使用阿里云、网易云。

从仓库中下载镜像,根据镜像创建多个容器。

小结:docker本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就是一个image镜像文件。只有通过这个镜像文件才能生成docker容器。image文件可以看作是容器的模板。docker根据image文件生成容器的实例。同一个image文件,可以生成多个同时运行的容器实例。

image文件生成的容器实例,本身也是一个文件,称为镜像文件。

一个容器运行一种服务,当我们需要时,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器。

至于仓库,就是放了一堆镜像的地方,我么可以把镜像发布到仓库中,需要的时候从仓库中拉下来就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QYHuiiQ

听说打赏的人工资翻倍~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值