Docker 基础

docker

Docker是一个C/S的架构,它的Docker Daemon 作为 Server 端,在宿主机上以后台守护进程的形式运行,Docker Client使用比较灵活,既可以在本机上以bin命令的形式发送指令,也可以在远端通过RESTful API 的形式发送指令;Docker的Server端接受指令并把指令分解为一系列的任务去执行。

docker与传统虚拟机的区别

  • 虚拟机是一种基于硬件的虚拟技术,它采用指令级的虚拟,完全虚拟一整套物理主机,包含CPU、内存、磁盘、网卡等硬件设备,给用户呈现的就是一个物理主机的特性。


    image.png
  • hypervisor 是一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。
image.png
image.png

为什么要用docker

一致的运行环境

  • 开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 「这段代码在我机器上没问题啊」 这类问题。

更轻松的迁移

  • 由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。

整体交付

  • 把应用的依赖打包到 docker 镜像中,保证部署的每一台机器依赖都是完整的,同时使用容器技术屏蔽了操作系统和硬件的差异,使得开发、测试、部署、运维过程中能够保持一致,解决了很多维护难题。

docker 的基本组成

image.png

Docker Client:Docker 客户端,提供给用户一个终端,用户输入 Docker 提供的命令来管理本地或远程的服务器。

Docker Daemon:服务端守护进程,接收 Client 发送的命令并执行相应的操作。

Docker Images:Docker 镜像,一个特殊的文件系统,封装了运行时需要的库、资源、应用等。

Docker Container:Docker 容器,提供了运行环境,通过 Docker Images 启动,在 Docker Images 基础上运行应用。

Docker Registry:Docker 仓库,用来管理镜像,实现镜像的上传、下载、浏览。

docker 应用场景

现在有一个需求,需要对应用App1做修改、测试和发布新的变更到生产环境。工作步骤?

    1. 开发人员在私有仓库中找到这个应用,假设为 v1.0 版,把这个版本下载到开发机器,做修改并提交新版本 v1.1 到私有仓库,并通知测试人员测试
  • 2.测试人员下载开发者刚刚提交的版本,并把测试结果反馈给开发者
  • 3.如果测试失败,开发人员继续修改,完成后提交新版本给测试人员做新一轮的测试;如果测试成功,开发需要把要发布的应用名称和版本号提供给运维同时。
  • 4.运维人员根据应用名称和版本号,把相关镜像从私有仓库下拉到各个生产环境的机器上,停掉旧版本的docker启动新版本的docker

你可能感兴趣的:(Docker 基础)