Docker 基础(一)
“It works on my machine”,曾经程序员的工作除了调试代码还要调试环境,每一次项目的迁移、发布都要耗费巨量精力,Docker技术的出现帮我们解决了这个问题。Docker是一个开源的应用容器引擎,基于Go语言开发,Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的融通器中,然后发布到任何流行的系统。
也就是说Docker将“my machine”的环境完美复刻到了任何一个软件运行的环境中,程序员只需要关心程序能不能在自己的机器上跑起来,就可以保证程序能在任何地方运行,这种技术几乎消除了环境调试对开发人员的精神消耗。
什么是容器(container)?容器可以理解为是一个运行在主机上的独立于其他进程的沙箱进程,这种进程的隔离使用的是linux的kernel namespaces(内核命名空间)和cgroups(Control Groups控制组)能力。
容器的特性可以归纳为以下几项:
是一个可运行image(镜像)的实例,我们可以通过Docker Api或者CLI执行对容器的创建、运行等等操作。
容器可以运行在任何地方,比如:本地机器、虚拟机、云服务。
容器是可移植的,可以运行在任何系统上。
单个容器是和其他容器隔离的,每个容器运行自己的软件、二进制文件、配置等。
什么是镜像(image)?镜像是一个运行中的容器使用的独立的文件系统。这个独立的文件 系统由一个镜像提供,并且这个镜像包含所有运行应用所需的所有依赖、配置、二进制文件、脚本。镜像通常包含对容器的其他配置,比如环境变量、启动时的默认命令和其他元数据。