Docker入门

​ 写这篇文章的动机源于之前的一次答辩,所在团队和项目用到的东西不够熟练确实不应该。。。

简介

​ Docker,亦被称之为容器技术,将一个资源池,划分成很多份独立的小资源(官方称其为集装箱,我觉得还是挺恰当的),将程序和依赖进行打包,做到快速交付,解决了“这个在我的机器上没问题”这种环境问题,跟虚拟机不同的是,他虚拟的颗粒更小,所有容器会直接调用系统资源,不像虚拟机一样虚拟出整个OS,更加轻便

核心概念

  1. 容器是程序运行的直接载体,每个容器都相互独立,但可以做到通信和资源交换,换句话说,容器是镜像的实例化
  2. 镜像是容器的源码或者说是模板,分层设计,不同的镜像共有的层可以一起共享,最大程度减少存储空间,Docker的镜像存在于Docker的注册表中
  3. 仓库则是存储镜像的地方,大概就是分社区的开源仓库,以及企业自用的私有仓库

工作流程

如果直接执行命令

1
docker run hello-world

首先会在本地查找这个镜像,如果有,直接构建容器,如果没有,就去远端仓库拉取到本地,随后构建容器,不指定版本就拉取最新的,镜像一般是通过Dockerfile来构建的(还有commit,一般没人用),Dockerfile可自定义编写,基于其去build一个镜像

数据管理

​ docker的容器销毁和启动是非常频繁的,显然不可能把数据跟容器绑定在一起,像数据库这种持久化的数据,需要另外存放

​ docker用于存储永久数据的方法有两种:数据卷和挂载主机目录,两者区别在于数据卷是专门给docker使用的一块存储区域,而挂载主机目录则是可以任意挂载。多个容器可以共享一个数据卷,一个容器也可以挂载多个数据卷,对于数据卷的修改是立即生效的

底层实现

​ Docker 底层的核心技术包括 Linux 上的命名空间(Namespaces)、控制组(Control groups)、Union 文件系统(Union file systems)和容器格式(Container format)

底层不太懂,先引用这里


后面的就通过项目要熟悉吧,操作啥的= =