Docker 简单入门

Docker 实际本质也就是一个非常轻量级的虚拟机,用于将一个或多个程序的全套运行环境整个打包起来,与实际系统分离,大幅简化应用部署。不管物理机是运行的什么系统版本,统统可以完美运行。

从实际应用来看,Docker 适合那种搭建复杂,依赖环境还一堆的程序。这一类经常是哪怕有现成教程参考,搭建过程也非常的不容易,而利用 Docker ,则直接下载一个现成镜像,立即可以投入使用,整个流程简化为几分钟就搞定。后面假如想把这个程序分享给别人,或者转移到另一台系统环境完全不同的机子上,也只需要简单的打包一下镜像,到新机上重新运行即可。

亦或是一台物理机需要运行多个程序,然而每个程序又需要各自不同的一堆依赖,所有程序全装上的话,整个物理机系统会变得混乱不堪,同时也导致出问题的概率大幅提升,后续维护困难。如果使用传统的 VMware 这类虚拟机,每个程序各开一个虚拟机,那又会消耗大量硬件资源,物理机无法承受。这种时候如果利用 docker ,则可以将每个程序隔离开,各自运行所需的环境,对硬件要求也较低。

Docker 的几个名词概念:

镜像(Image)

Docker 的官方 logo 是鲸鱼背上驮着一堆集装箱,镜像就相当于是一个个不同用途的空集装箱,A 箱标着用来装水果,B 箱标着蔬菜,C 箱标着海鲜……各种完全不同的东西,由于有集装箱的依托存储,可以和谐的共同存放在一起,而且运输极为方便。

集装箱等于是一个固定框架,还可以在框架的基础上干自己所需要的事(也就是上面说的装各种货物进去),在修改完工后(装完货后),迁移整个环境依旧非常方便(整个集装箱可以随意搬动)。

类比到实际应用里,就是各种例如 Nginx 镜像,MySQL 镜像,Ubuntu 镜像等。

这些镜像里,有的是整套程序环境(已经装有部分货物的箱子)

有的则只包含最基础的系统环境(空箱子)

而利用镜像创建的容器环境里,用户又可以继续进行随意修改(把箱子里已有货物拿出来换成别的,或者放更多货物进去等),改完还能再次打包后进行方便的传输。
Uploaded Image总体来说,Docker 中的镜像就是相当于一个框架蓝本,选用不同的蓝本,就可以直接构建出各种不同功能的现成系统环境。

容器 (Container)

容器是由镜像创建而成的虚拟机,一个镜像可以创建无数个对应的容器,比如下载了一个 CentOS 镜像,那么就可以创建出无数个容器,每个容器都等于一个小虚拟机,里面运行着 CentOS 系统。

仓库 (Repository)

仓库实际也就是一个镜像市场的作用,从市场里可以下载到各种所需的镜像,自己修改完的镜像也可以选择上传到仓库里提供他人下载。Docker 默认官方仓库为 Docker Hub 。仓库还分为公共和私人的,私人仓库可以自己搭建,用于存放私有镜像。