最近工作中需要频繁使用到docker,趁着最近比较闲,就初步学习一下,并将学习内容记录为博客,由于这部分知识对我来说也比较陌生,文中若有疏漏,欢迎评论指正。

简介

本文主要包括Docker的介绍、应用场景、优势以及基础架构。Docker其实就是一个虚拟化技术,将应用程序和应用程序需要的依赖环境一起打包,让部署无需担心环境问题。

介绍

Docker是一个开源的应用容器引擎,基于Go语言并使用Apache2.0协议开源。它可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,且容器性能开销极低。Docker自从17.03版本之后分为社区版(CE)和企业版(EE),对于个人使用社区版足够了。

应用场景

  • Web应用的自动化打包和发布。
  • 自动化测试和持续集成和发布。
  • 其他容器技术场景。

优势

Docker是一个用于开发、交付和运行应用程序的开放平台。Docker允许用户将应用程序与基础架构分开,从而可以快速交付软件产品。借助Docker这一工具,用户使用与管理应用程序相同的方式来管理基础架构。通过利用Docker的方法来实现快速交付、测试和部署项目代码,从而大大减少编码和生产环境中运行代码之间的延迟。

  1. 快速交付
    Docker允许开发人员使用提供的应用程序或服务的本地容器在标准化环境中工作,从而缩短开发周期。它非常适合持续集成和持续交付的工作流程,主要有如下的示例场景。

    • 开发者本地编码,使用容器与右工作关系的开发者共享工作结果。
    • 开发者使用Docker将应用程序推送到测试环境中,执行相关的测试工作。若有错误,可以在开发环境中进行修复,然后重新推送到测试环境。
    • 开发者测试完成,将修补程序推送给生产环境,类似推送更新的镜像一样,非常方便。
  2. 响应式部署和扩展
    Docker是基于容器的平台,允许高度可移植的工作负载。Docker容器可以在开发中机器上、生产环境机器上、云主机上,只要有Linux环境,都可以部署运行。它的可移植和轻量的特点,允许开发者轻松完成动态管理的工作负担,并根据需求,实时扩展或削减应用程序和服务。

  3. 同硬件多负载
    Docker是轻量且高效的,它为基于虚拟机管理的方案提供了一种可行的、经济的、高效的替代,可以充分利用计算资源。它适合于高密度的中小型部署,不太适合大型部署。

架构

Docker包括三个基本概念:

  • 镜像(Image),包含一整套完整的文件系统,如官方镜像ubuntu:16.04就包含完整的Ubuntu16.04最小的root文件系统。
  • 容器(Container),它与镜像的关系类似面向对象中的对象和类,镜像是静态的一套定义,容器则是它运行时的实例,容器可以被创建、启动、停止、删除和暂停等等操作。
  • 仓库(Repository),它是一个代码中心,存放镜像。

Docker使用客户端-服务器架构模式(即CS架构),使用远程API来管理和创建Docker容器。示意图如下,图片来自网络。

Docker客户端(Client)通过命令行等工具与Docker主机(Host)中的Docker守护进程通信,Docker主机是一个执行Docker守护进程和容器的物理或者虚拟的机器。而Docker仓库用来保存镜像,Docker Hub提供庞大的镜像集合供使用,通常,一个Docker仓库包含多个仓库,每个仓库包含多个标签,每个标签对于一个具体的镜像。一个仓库会包含一个软件不同版本的镜像,标签用于区分不同的版本,可以通过仓库名:标签名的方式制定镜像,不指定则默认最新版本。

补充说明

本文主要介绍了Docker的一些基本知识和比较简单的架构,具体Docker的安装和使用会在下一篇博客中提到。

Docker教程-简介相关推荐

  1. docker教程_1 简介和安装

    https://gitee.com/fakerlove/docker 文章目录 Docker 教程 1. 简介 1.1 概念 1.2 优点 1.3 安装 环境准备 安装 Docker 教程 1. 简介 ...

  2. Docker:Docker的简介、安装、使用方法之详细攻略

    Docker:Docker的简介.安装.使用方法之详细攻略 目录 Docker的简介 0.1.知乎对Docker的理解-Docker就是集装箱 0.2.简书对Docker的理解-Docker带来标准化 ...

  3. Docker教程介绍

    Docker教程介绍 教程环境准备 linux 系统 virtualbox 软件安装 教程介绍 0-安装Vagrant,安装 centos 系统. 1-docker 介绍 2-docker 安装 3- ...

  4. 小D课堂 - 新版本微服务springcloud+Docker教程_汇总

    小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介 小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型 小D课堂 - 新版本微服务s ...

  5. 【学习笔记】尚硅谷周阳老师的Docker教程学习笔记

    本文是尚硅谷周阳老师的Docker教程的相关学习笔记,暂时还没有检查勘误过. 一.Docker简介 1. 简介 Docker的出现是为了解决代码在本机可以正常运行,而部署到其他机器不能运行的问题.这是 ...

  6. 面向Java开发人员的Docker:简介

    本文是我们学院课程中名为< 面向Java开发人员的Docker教程 >的一部分. 在本课程中,我们提供了一系列教程,以便您可以开发自己的基于Docker的应用程序. 我们涵盖了广泛的主题, ...

  7. 【组队学习】【24期】Docker教程

    Docker教程 开源内容: https://github.com/datawhalechina/team-learning-program/tree/master/Docker 基本信息 贡献人员: ...

  8. 简明docker教程

    简明docker教程 一.什么是docker 二.docker与虚拟机比较 三.安装docker 四.基本概念 1.镜像 2.容器 3.数据卷 4.挂载 五.参考资料 有收获的话请加颗小星星,没有收获 ...

  9. 一小时Docker教程

    cSphere.cn – 国内首个docker管理平台 Menu 一小时Docker教程 Docker基础 这篇基础文章是方便用户在使用cSphere平台之前,了解docker基础知识. 针对已经有一 ...

最新文章

  1. linux上离线安装mysql_Linux下安装mysql(离线安装和在线安装)
  2. Java基础笔记12
  3. Plan with Global Optimization
  4. mysql binlog rotate_binlog rotate引发的MySQL阻塞事件
  5. Git如何生成多个ssh key添加到ssh-agent管理项目
  6. JavaScript的类型自动转换高级玩法JSFuck
  7. day11 java的继承
  8. 2017.6.4 problem b 失败总结
  9. windows2003 ftp 无法下载 解决
  10. linux系统为什么很重要,为什么Linux系统始终取代不了Windows?这4个原因80%的人不知道!...
  11. php 5.6.21连接mysql_IIS 7.5 + PHP-5.6.3 + mysql-5.6.21.1
  12. java代码读取dbsequence的值_JDBC读取新插入Oracle数据库Sequence值的5种方法
  13. 常用软件版本查看Windows下
  14. javascript前端导出Excel简单写法
  15. 常用的MySQL命令大全(完整版、太到位了)
  16. 嵌入式单片机基础篇(二十三)之串口通信
  17. Google Earth Engine(GEE)合成长时序的月NDVI与LST
  18. 什么蓝牙耳机适合学生党?内行推荐四款适合学生党的蓝牙耳机
  19. 一般英文论文的大体结构
  20. 迄今最全人脸识别开源

热门文章

  1. 使用Zookeeper实现leader选举-Leader Latch
  2. 基于TCP实现双向通信对话功能
  3. Mybatis中的一级缓存
  4. 数字型变量可以直接计算
  5. 坦克大战java_清华毕业大佬用一个坦克大战项目讲完了23种设计模式
  6. linux系统的ftp命令大全,linux系统ftp命令(示例代码)
  7. ScrollView(RecyclerView等)为什么会自动滚动原理分析,还有阻止自动滑动的解决方...
  8. OKWatchDog 打造一个安全的容器类
  9. 全备份失败后,如何手工清除exchange日志文件,附微软KB
  10. VS2010 关于.wav音频文件播放