Docker 学习笔记

非原创,根据老师授课内容进行的整理

目录

非原创,根据老师授课内容进行的整理

简介

应用场景

1.应用交付

2.多版本混合部署

3.内部开发测试环境

Docker版本说明

Docker核心对象

镜像(Image)

容器(Container)

个人理解

Docker应用架构分析

架构图

Docker运行机制

docker pull

docker run


简介

docker是一个虚拟化平台,官网:Home - Dockerd,诞生于2013年初,基于Google公司的Go语言进行实现。可以通过虚拟化方式,为应用提供可运行的容器,容器之间可以相互隔离,独自运行,基于这种方式我们可以更快打包,部署和运行运行程序,实现软件的快速交付

应用场景

1.应用交付

Docker技术为应用交付领域带来的最大变化就是开发环境的一致性。传统的开发范式需要开发者自己在本地进行开发,但是本地的开发环境和远端的测试和正式环境还是存在差异,所以每次开发完成都需要反复比对环境的差异,包括操作系统以及操作系统里面的一寸软包是否齐全,非常玛麻烦。但是使用Docker镜像,我们可以将所有的环境依赖都打包到镜像中,然后通过镜像来传输,这样会更好的高效。例如,直接在linux系统上安装mysql过程并不简单,需要配置安装源,安装依赖包,对mysql进行配置等,如果要在多台主机上安装,每台主机都要进行这些繁琐的操作,万一服务器挂了,这一系列操作还要再重来一边,但是有了docker,一个安装配置好的mysql容器,可以直接拿到另一台主机上启动,而不必重新安装mysql。同时,还可以保证开发,测试和生产的环境一致。

因为Docker中的容器是相互隔离的,使用相同的镜像就可以保证配置的相同(个人理解)

2.多版本混合部署

随着产品的不断更新迭代,一台服务器上部署同一个应用的多版本再企业内部非常常见。但一个服务器部署同一个软件的多版本,文件路径,端口等资源往往会发生冲突,造成多个版本无法共存的问题。如果用docker,这个问题将非常简单。由于每个容器都有自己独立的文件系统,所有根本不存在文件路径冲突的问题;对于端口冲突问题,只需要再启动容器时指定不同的端口映射即可解决。

3.内部开发测试环境

传统的开发测试环境都是由运维人员进行专门的环境配置而大剑出来的,而且需要运维人员专门维护。环境一旦出现问题,恢复起来也很麻烦。借助与Docker技术,我们将应用程序需要的依赖都固化到Docker镜像中,然后再对应Docker容器中进行开发测试。就算环境出啊先问题,我们只要将当前容器删除重启即可回复

Docker版本说明

Docker分为两个版本,社区版本Docker CE和企业版本Docker EE,企业版由Docker公司支持,可在经过认证的操作系统和云提供商中使用。社区版时免费的Docker产品,包含了完整的Docker平台,不过是由社区进行维护。

Docker核心对象

镜像(Image)

Docker镜像可以堪称是磁盘的特殊的文件系统(Docker Hub),镜像打包了应用的运行环境以及应用程序,是静态的。可以通过Docker启动这个镜像,进而将镜像中的程序在一个容器中启动运行起来。在Docker镜像中,操作系统是高度精简的,镜像中的操作系统还不包含内核,容器中都是共享宿主机的内核。所以有时会说容器仅包含必要的操作系统(通常只有操作系统文件和文件系统对象),容器中查看到的linux内核版本和宿主机一致。可以理解为一个安装程序。

容器(Container)

Docker容器可以将其理解为一个运行镜像的载体,镜像(Image)和容器(Container)的关系,就像是光盘和光驱。容器基于镜像创建、启动,然后运行镜像的中的文件。容器时轻量级的,它不需要管理程序的额外负担,而是直接在主机的内核中运行。我们常常说使用镜像打包应用程序,使用Docker发布,部署应用程序。当你的应用成功在Docker上运行时,这个应用就是容器化应用。我们还可以通过Docker启动的容器堪称时操作系统中的一个进程。

个人理解

镜像就是安装程序,容器就是个运行程序。可以通过镜像创建一个容器。

Docker应用架构分析

架构图

Docker是一种Client/Server(CS)架构的应用程序,Docker客户端与Docker守护进程进行对话,该守护进程完成构建,运行和分发Docker容器的繁重工作。Docker客户端和守护程序可以在同一系统上运行,或者您可以将Docker客户端连接到远程Docker守护程序。参考docker官网Docker overview | Docker Documentation

  1. Docker Client是安装完成Docker之后,直接使用的docker命令。
  2. Docker Host就是我们安装了docker的宿主机(就是安装了docker的操作系统)
  3. Docker Daemon是docker的后台守护进程,侦听并处理Docker客户端命令,管理Docker对象,例如镜像,容器,网络和卷(数据卷)。
  4. Registry是docker拉取镜像的远程仓库,提供大量的镜像供下载,下载完成之后保存在Images(本地仓库)中。相当于一个大型的软件商店
  5. Images是Docker本地的镜像仓库,可以通过docker images查看镜像文件

Docker运行机制

docker pull

  1. 客户端将指令发送给docker deamon(客户端将指令发送给守护进程)【用户告诉小艾我要下载一个东西】
  2. 守护进程docker daemon先检查本地仓库(images)中有没有相关的镜像【小艾先看看本地有没有安装包】
  3. 如果本地没有相关的镜像,则向镜像服务器请求,将远程镜像下载到本地【小艾如果在本地没有发现安装包,则从应用商店下载应用】

docker run

  1. 检查本地是否存在指定镜像,如果不存在就从共有仓库下载【小艾打开安装包,没有安装包先去应用商店下载】
  2. 利用镜像创建并启动一个容器【使用安装包安装应用程序】
  3. 分配一个文件系统(简版linux系统),并在只读的镜像层外挂在一层可读
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值