前言

一套代码在开发环境,测试环境,生产环境 时不时会出现一些不同的问题,可能是因为语言版本 数据库版本 系统版本等导致的问题,这个是很烦的,那能不能部署的时候连环境一起上呢?

Linux容器

我们先来了解一下linux容器
Linux 发展了一种虚拟化技术:Linux 容器(Linux Containers,缩写为 LXC)

在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。

容器是进程级别的

相比虚拟机模拟一个系统的方式,容器的优势有很多。不会占用过多系统资源,没有上面冗余步骤,启动快,体积小

容器有点像轻量级的虚拟机,能够提供虚拟化的环境,但是成本开销小得多。

docker

什么是docker

docker属于对Linux容器的一种封装。

Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

docker的用途

Docker 的主要用途,目前有三大类。
(1)提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。

(2)提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。

(3)组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。


image文件

这个image不是指图片格式文件,image 是二进制文件。

Docker吧应用程序及其依赖,打包到 image 文件里头。

只有通过这个文件,才能生成docker容器。image文件可以当作容器的模板。
docker根据image文件生成容器的实例,一个image文件可以生成多个同时运行的容器实例

实际开发中,你的个性化的 image 文件可以通过继承另一个 image 文件,加上一些个性化设置而生成。

举例来说,你可以在 Ubuntu 的 image 基础上,往里面加入 Apache 服务器,形成你的 image。

image文件是通用的,一台机器的image文件拷贝到另外一台机器,还是可以使用的。