热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Docker==>简介

一、Docker是什么Docker最初是dotCloud公司创始人SolomonHykes在法国期间发起的一个公司内部项目,于2013年3月以Apache2.0授权协议开源,主要项

一、Docker 是什么

  Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。



  • Docker 使用 Google 公司推出的 Go 语言 进行开发实现。

  • Docker 是 Linux 容器的一种封装,提供简单易用的容器使用接口,它是最流行的 Linux 容器解决方案。

  • Docker 的接口相当简单,用户可以方便的创建、销毁容器。

  • Docker 将应用程序与程序的依赖,打包在一个文件里面。运行这个文件就会生成一个虚拟容器。

程序运行在虚拟容器里,如同在真实物理机上运行一样,有了 docker,就不用担心环境问题了。

二、容器 VS 虚拟机

  Docker 是一种OS虚拟化技术,是一个开源的应用容器引擎。它可以让开发者将应用打包到一个可移植的容器中,并且该容器可以运行在几乎所有 Linux 系统中(Windows10目前也原生支持,Win10前需要内置虚拟机),正所谓 “一次打包,到处运行” 。

  Docker 容器的运行是完全的沙箱机制,相互之间不会有任何关联(除非自己串联集群)。网络、存储、进程等资源,不仅对于不同的容器是相互隔离,对于宿主机和容器之间也是隔离的,除非你手动映射暴露端口或者挂载存储卷。

差异点



  • 每台虚拟机都具备相关应用,必要的二进制类库,是一个完整的操作系统;

  • 容器是与宿主机共享硬件资源及操作系统的,可实现资源的动态分配,容器是在宿主机的操作系统上的用户空间层进行的分离. Linux中的容器并不是去模拟一个完整的操作系统,而是对进程进行隔离,相当于是在正常进程的外面套了一个保护层 

Docker 的优点



  • 更加充分地利用资源;

  • 一处打包,到处运行;

    • Docker将应用程序与该程序的依赖打包在一个文件里,运行此文件就会生成一个虚拟容器;



  • Docker的接口相当简单,并能做到版本管理、复制、分享、修改等;

其他优点



  • Docker 启动快速属于秒级别。虚拟机通常需要几分钟去启动。

  • Docker 需要的资源更少。Docker 在操作系统级别进行虚拟化,Docker 容器和内核交互,几乎没有性能损耗,性能优于通过 Hypervisor 层与内核层的虚拟化。

  • Docker 更轻量。Docker 的架构可以共用一个内核与共享应用程序库,所占内存极小。同样的硬件环境,Docker 运行的镜像数远多于虚拟机数量,对系统的利用率非常高。

  • 与虚拟机相比,Docker 隔离性更弱。Docker 属于进程之间的隔离,虚拟机可实现系统级别隔离。

  • 快速创建、删除。虚拟机创建是分钟级别的,Docker 容器创建是秒级别的,Docker 的快速迭代性,决定了无论是开发、测试、部署都可以节约大量时间;

我们可以从下面这张图中很清楚地看到容器相比于传统虚拟机的特性的优势所在:

三、Docker 的应用场景



  • Web应用的自动化打包和发布

  • 自动化测试和持续集成、发布

  • 在服务型环境中部署和调整数据库或其他应用

四、Docker 的三大概念

Image(镜像)



  • Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。 

  • 一个只读的模板,镜像可以用来创建 Docker 容器。

  • 用户基于镜像来运行自己的容器。镜像是基于 Union 文件系统的层式结构。

  • 可以简单创建或更新现有镜像,或者直接下载使用其他人的。可以理解为生成容器的『源代码』。

Container(容器)



  • 容器是从镜像创建的运行实例,在启动的时候创建一层可写层作为最上层(因为镜像是只读的)。

  • 可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

  • 可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

Repository(仓库)



  • 集中存放镜像文件的场所,可以是公有的,也可以是私有的。

  • 最大的公开仓库是 Docker Hub。

  • 国内的公开仓库包括 Docker Pool 等。

  • 当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。

  • Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。

五、Docker 架构图



  • Docker 使用 C/S 结构,客户端/服务器体系结构

  • Docker 客户端与 Docker 服务器进行交互

  • Docker服务端负责构建、运行和分发 Docker 镜像

  • Docker 客户端和服务端可以运行在一台机器上,也可以通过 RESTful 、 Stock 或网络接口与远程 Docker 服务端进行通信

各组件说明



  • Docker Client

    • 提供命令行界面(CLI)工具,是用户与 Docker Daemon 进行交互的主要方式



  • Docker Daemon

    • 是Docker的服务器组件,以 Linux 后台服务的方式运行,是 Docker 最核心的后台进程

    • 用于响应docker client的请求

    • 启动: docker --daemon = true 或 docker -d=true  

    • 默认情况下docker daemon只响应来自本地的请求,若需要响应远程的请求需修改配置

      • 配置文件: /etc/systemd/system/multi-user.target.wants/docker.service

      • 修改环境变量 ExecStart 后面添加 -H tcp://0.0.0.0

      • 请求远程服务器: docker -H remote-host cmds...





  • Docker Image

    • 是一种特殊的文件系统

    • 提供了容器运行时所需的程序、库、资源、配置文件,以及一些运行时相关的配置参数(如匿名卷、环境变量、用户等)

    • 镜像文件是只读的,是一个存储在本地磁盘上的物理文件,无相关动态数据

    • 镜像的创建:

      • 基于Dockerfile生成

      • 从仓库下载

      • 构建运行的容器以创建镜像





  • Docker Container

    • 是真正运行项目程序、消耗系统资源、提供服务的地方

    • 是真正干活的那个大兄弟



  • Docker Registry

    • 是Docker Image的存储仓库



六、Docker 安装部署

 

七、Docker 相关命令

 



推荐阅读
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 弹性云服务器ECS弹性云服务器(ElasticCloudServer)是一种可随时自助获取、可弹性伸缩的云服务器,帮助用户打造可靠、安全、灵活、高效的应用环境 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • SpringMVC工作流程概述
    SpringMVC工作流程概述 ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
author-avatar
手机用户2502869895
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有