Docker概念 (容器, 镜像)

Docker概念 (容器, 镜像)
logo含义:
把货物装在集装箱里面, 通过蓝鲸把集装箱从一个码头搬到另一个码头
把开发的软件装在容器里面, 通过docker这个软件从一个linux系统搬到另一个linux系统
(容器使用的是沙箱机制,相互之间不会有任何接口)
Docker作用: 主要是解决了软件在不同Linux系统之间的移植问题 (无缝移植)
(eg. 开发linux, 测试linux 和 生产linux的软件移植)

Docker概念 (容器, 镜像)
Docker 是C/S架构。
Docker 客户端只需要向 Docker 服务器或者守护进程发出请求,
服务器或者守护进程将完成所有工作并返回结果。

Docker只对linux系统有效
一个linux系统只能跑一个Docker
如果要跑多个Docker, 要借助VMWare

Docker是操作系统的虚拟化技术, 类似于VMWare
Docker只能在linux系统跑(专而精), VMWare在linux和windows系统都能跑(灵活度高)
Docker优势: 启动速度快、资源占用小, 还有无缝移植 (限制: 相关软件都要安装在linux)

Docker 设计的目的: 加强开发环境与生产环境一致性
(减少出现开发/测试环境正常, 上线后异常的情况)

安装Docker的机器叫做宿主机 (宿主机改了, 容器会自动同步)
容器放在宿主机里面, 容器内的软件跟windows系统上安装的软件连接时, 要用映射端口
Docker概念 (容器, 镜像)
不是latast版本, 命令必须带版本号

基本概念:
Docker镜像(Image): 相当于软件的安装包
Docker容器(Container): 就是利用软件安装包把软件安装并运行起来 (Docker容器要基于Docker镜像)
Docker注册中心(Registry): 相当于仓库, 用来保存镜像的 (开发人员可以从注册中心下载镜像, 也就是下载软件安装包)

引申概念:
Docker镜像通过镜像ID进行识别。
但是当我们运行镜像时,通常不会使用镜像ID来引用镜像,而是使用镜像名来引用
镜像可以发布为不同的版本,这种机制我们称之为标签(Tag)

Docker容器通过容器ID进行识别, 由于容器ID的字符太长,我们通常只需键入容器ID的前4个字符即可
一个容器中可以运行多个应用程序, 如果是微服务架构, Docker 推荐单个容器只运行一个应用程序或进程

Docker仓库分为公共和私有两种。公共的 Registry 叫做 Docker Hub
(说明:在 Docker Hub 下载镜像巨慢,可以自己构建私有的 Registry)

注意事项:
如果容器正在运行, 我们对他所做的一切变更都会永久的写到容器的文件系统中。
(要切记,对容器的变更是写入到容器的文件系统中,而不是写入到Docker镜像中)

我们可以用同一个镜像启动多个Docker容器,这些容器启动后都是活动的,彼此还是相互隔离的。
我们对其中一个容器所做的变更只会局限于那个容器本身。

如果对容器的底层镜像进行修改,那么当前正在运行的容器是不受影响的,不会发生自动更新现象。
如果想更新容器到其镜像的新版本,那么必须当心,确保我们是以正确的方式构建了数据结构,否则我们可能会导致损失容器中所有数据的后果