Docker(1)概述

Docker

Docker为什么会出现

一款产品:有开发环境,测试环境,线上环境三种环境

开发环境到线上环境,问题:我在我的电脑上可以运行!你的电脑不能运行!

版本更新,导致了服务不可用。环境配置麻烦,每个机器都要去部署环境(redis,mysql,hadoop,python)耗时耗力。

ps::我曾经就遇到过Jenkins之前不是用docker去部署的,然后Jenkins中的某个插件更新了,导致缺少了配置项,我排查了很久。如果用docker就不会遇到这个问题

Docker能干嘛

之前的虚拟机技术

1个内核,上面安装各种依赖的,然后才是我们的应用

虚拟机技术缺点

1.资源占用多

2.多余的步骤多

3.启动慢

容器化技术

1个内核上面可以有多个docker容器,1个容器各自有各自的应用和各自应用所需要的依赖环境

每个容器是相互隔离的,互不影响

 

Docker介绍

Docker简介

  • Docker 是一个开源的应用容器引擎,基于 Go 语言
  • 可以打包应用以及依赖包到一 个轻量级、可移植的容器中
  • Docker 打包好了的容器,可以发布到任何流行的 Linux 机器上,也可以实现虚拟化
  • 容器是完全使用沙箱机制,相互之间不会有任何接口(独立)
  • 容器性能开销极低
  • Docker 使用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器
  • Docker 是实现容器技术的一种工具
  • Docker 容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样

工作中应用的场景

  • Web 应用的自动化打包和发布
  • 自动化测试和持续集成、发布
  • 组建微服务架构,通过多个容器,一台机器可以跑多个服务,因此在本机可以模拟出微服务架构

Docker 实现 DevOps(开发、运维)

  • 应用更快速的交付和部署(docker:打包镜像发布测试,一键运行; 传统:写一堆安装手册,部署文档,然后安装)
  • 更便捷的升级和扩缩容(部署应用就像搭积木一样方便,我们把mysql, springbot等各种环境打包成一个镜像,只需要更新镜像就行;  传统的:需要对mysql,springbot进行一个个的升级,还可能出现不兼容的情况,很麻烦)
  • 更简单的系统运维,开发,测试,线上环境高度一致(不会出现我开发环境是好的,你测试环境不好的这种问题)
  • 更高效的计算资源利用,docker是内核级别的虚拟化,可以在一个物理机上运行很多个容器实例,服务器性能可以被压榨到极致

Docker名词解释

Docker基本组成

上图解释

  • 在 Docker Client 敲 Docker 命令调用 Docker API 来操作 Host 上的 Docker 服务
  • Docker 服务可以从仓库拉镜像到本机,也可以用本机镜像创建一个容器并运行

仓库(Registry)

  • 集中存放镜像文件的场所
  • 每个镜像文件有不同的标签(不同的版本)
  • 最大的开放仓库是Docker Hub,默认是国外的: https://hub.docker.com/ 存放了数量庞大的镜像供用户下载
  • 国内的公开仓库包括阿里云,网易云等,要配置镜像加速
  • 仓库分为公开仓库( public )和私有仓库( private )两种形式

镜像(Images)

  • 创建容器的模板
  • 一个镜像可以创建很多容器

容器(Containers)

  • Docker 利用容器独立运行一个或一组应用(服务),通过镜像来创建的
  • 每个容器之间是相互隔离的
  • 它可以被启用、开始、停止、删除

主机(HOST)

  • 一个物理机或虚拟机
  • 用于运行 Docker 守护进程和多个容器
  • 可存放多个镜像
  • 也称为宿主机,node节点

Docker 守护程序(docker daemon)

  • 监听 Docker API 请求
  • 也会管理 Docker 对象,如:镜像、容器、网络、卷
  • 守护程序还可以与其他守护程序通信以管理 Docker 服务

Docker 客户端(client)

  • 客户端使用 Docker 命令或其他工具调用 Docker API
  • 当然也可以在 HOST 直接敲 Docker 命令
  • 客户端可以与多个 Docker 守护程序通信

官方介绍文档

https://docs.docker.com/get-started/overview/

原文地址:https://www.cnblogs.com/xinhua19/p/15620355.html