Docker简介

首先,我们得到别人的镜像库拉取(pull)下来。简单粗暴理解为下载能够在docker运行的程序。然后,我们在拉取下来的镜像库里,添加进新的东西。就比如我想在原来镜像的基础上添加多个或一个jar程序,这样我们就构建(build)成了一个全新的属于你自己的镜像了。最后,你就可以运行(run)这个属于你的镜像了。这个进程就会运行在你的docker容器中。

Docker仓库(Registy)
可以理解为App Store,就是一个用来存放文件程序的公共的地方。它用来存放能够提供docker运行的镜像文件,一般有很多大公司、大神等放了一些好用的镜像到上面给我们用了,我们可以pull下来直接使用。通常一个仓库会包含一个镜像的不同版本,所以会用不同的标签定义它。
docker仓库有2种,一种是上面说的大伙儿都能下载的,叫公共仓库。另一种叫私有仓库,是很多大神会在自己公司建立自己的私有仓库,放自己的镜像文件上去,只让他的团队去用,别人用不了。

Docker镜像
docker镜像,一个能够运行在docker容器上的一组程序文件。它提供了容器运行时所需的程序、库、资源、配置等文件外,还包含了为运行时准备的一些配置参数(如匿名卷、环境变量、用户等),是一个完整的root文件系统。镜像不包含任何动态数据,原始内容在构建之后也不会被改变。我们下载它后就可以在它的基础上增加一层我们的程序了,这样新的镜像就诞生了。
镜像构建方式:通过Dockerfile文件构成、通过容器构建

Docker容器
容器,就是运行程序的载体。镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。容器的实质是进程,但与直接在宿主机执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户ID空间。容器内的进程是运行在一个隔离的环境里,使用起来就好像是在一个独立于宿主机的系统下操作一样。这种特性使得容器封装的应用比直接在宿主机运行更加安全。也因为这种隔离的特性,很多人初学Docker时常常会把容器和虚拟机搞混。
前面讲过镜像使用的是分层存储,容器也是如此。每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,我们称这个为容器运行时读写而准备的存储层为容器存储层。容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。按照Docker最贱实践的要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。所有的文件写入操作,都应该使用数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。
数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器可以随意删除,重新run,数据不会丢失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值