Docker笔记(一)--Docker是什么

Docker用途

  • 将执行程序和其运行环境一起打包 ,利用镜像和容器技术 实现"一次打包 到处运行", 免去运行环境依赖
  • 方便部署 迁移扩展 通过Dockerfile等技术可以实现自动化
  • 通过仓库机制,不用手动复制 而是直接从仓库拉取镜像即可 方便部署
  • 通过tag技术进行类似于git的版本控制
  • 相比于虚拟机更加轻量化占用更少资源

Docker组成

Docker笔记(一)--Docker是什么_第1张图片

Docker客户端

  • 即在终端输入的命令行 ,与docker服务器部分交互的接口

Docker服务器

  • 即你输入命令行以后它在底层给你执行工作的那部分
  • 类似mysql的服务端部分,后台监听着客户端的请求,并且管理着docker的镜像、容器、网络、磁盘等(图中只列出了镜像与容器)
  • 实现原理是通过守护进程来实现
  • docker服务部分可以与客户端运行在同一台机器也可以是不同机器(通过远程连接)

Docker镜像

  • 镜像是一种软件包 ,这种软件包它包含了运行某个软件所需要运行环境,他是静态只读的文件模板.
  • 比如web应用需要jdk环境、需要tomcat容器、需要linux操作系统 我们可以把这一切都进行打包成一个整体 ,这个整体就是一个镜像
  • 打包后的镜像在某台机器上能运行,那它就能够在任何装有docker的机器上运行
  • 任何镜像的创建会基于其他的父镜像,也就是说镜像是一层套一层,
  • 比如一个tomcat镜像,需要运行在centos/ubuntu上,那我们的tomcat镜像就会基于centos/ubuntu镜像创建
  • 可以直接到Docke仓库上拉取一个做好的镜像直接使用

Docker容器

  • 上一步我们构建的镜像只是一个静态的文件,容器是镜像运行以后的一个实体
  • 容器在里面可以运行一个或者一组应用 镜像
  • 我们可以控制容器的启动、开始、停止、删除
  • 比如上面打包好的web应用运行镜像下载后用docker运行此镜像 形成一个容器,在容器里面可以通过里面配好的环境进行其他应用的运行
  • 容器之间是相互隔离的

Docker容器数据卷

  • 存在问题

应用程序产生的数据(比如操作日志、异常日志、数据)也是在容器内的系统中存放的,
默认不会做持久化(不会永久保存的)
随着容器的关闭,容器内的数据也会丢失
重新开启的容器不会加载原来的数据(简单说就是容器重新启动又是另外一个实例了)

  • 解决方案

容器数据卷的设计目的就是做数据的持久化和容器间的数据共享
数据卷完全独立于容器的生命周期
也就是说就算容器关闭或者删除,数据也不会丢失。
简单点说就将宿主机的目录挂在到容器,应用在容器内的数据可以同步到宿主机磁盘上,
这样容器内产生的数据就可以持久化了。

Docker仓库

  • 存放镜像的仓库 ,
  • 可以到上面获取镜像 也可以自己上传自己配置好的镜像
  • 同一个镜像又会有多个版本 在docker中被称为tag

Docker仓库注册服务器

  • 我们有时候会把Docker注册服务器和Docker仓库不加区分,其实Docker注册服务器严格意义上可以理解为是仓库的仓库
  • 它上面放着多个仓库,按照功能不同来划分可以分为比如Ubuntu仓库 Centos仓库等等 按照属性不同划分可以分为公有仓库 私有仓库
  • DockerHub是官方提供的最大的公有仓库你也可以在本地网络创建自己的私有仓库

Docker对比

Docker笔记(一)--Docker是什么_第2张图片
Docker笔记(一)--Docker是什么_第3张图片

  • 如果上面两张图对比的还是比较抽象的话
  • 这里引用一个大佬的比喻
  • 来自https://www.cnblogs.com/peng104/p/10296717.html

Docker笔记(一)--Docker是什么_第4张图片
Docker笔记(一)--Docker是什么_第5张图片
Docker笔记(一)--Docker是什么_第6张图片

你可能感兴趣的:(Docker)