Docker

Docker

Docker容器虚拟化平台。

Docker,翻译过来就是码头工人

Docker是一个开源应用容器引擎 ,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中 ,然后发布到任何流行的Linux 机器上 ,也可以实现虚拟化容器完全使用沙盒机制,相互之间不会存在任何接口。几乎没有性能开销,可以很容易的在机器和数据中心运行。最重要的是,他们不依赖于任何语言、框架或者包装系统。

小知识:沙盒也叫沙箱(sandbox)。在计算机领域指一种虚拟技术,而且多用于计算机安全技术。安全软件可以让它在沙盒中运行,如果含有恶意行为,则禁止程序的进一步运行,而这不会对系统造成任何危害。

Docker是dotCloud公司开源的一个基于LXC的高级容器引擎,源码托管在Github上,基于go语言并且遵从Apache2.0协议开源。 GitHub地址:https://github.com/moby/moby

小知识:LXC为Linux Container的简写 。Linux Container 容器是一种内核虚拟化 技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。 LXC主要通过Kernel的namespace实现每个用户实例之间的项目隔离,通过cgroup实现对资源的配额和调度。

docker官网:https://www.docker.com

docker中文库:https://www.docker.org.cn/

Docker容器技术与虚拟机的区别。

相同点:docker和容器技术和虚拟机技术,都是虚拟化技术。

不同点 : 虚拟机技术:

容器技术:

通过图片,我们很明显的看到docker有着比虚拟机更少的抽象层。 由于docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。所以docker效率比虚拟机效率高。达到了秒级启动的地步。

docker相较于VM的优点:

1、比VM小、快,Docker容器的尺寸减小相比于整个虚拟机大大简化了分布

到云和分发时间的开销。Docker启动一个容器实例时间仅仅需要几秒钟。

2、Docker是一个开放的平台,构建、发布和运行分布式应用程序。

3、开发人员不需要关系具体是哪个Linux操作系统

4、Google、微软(azure)、亚马逊、IBM等都支持docker。

5、Docker支持Unix/Linux操作系统,也支持Windows和Mac。

这里。。。。。。VM虚拟机与JVMjava虚拟机

虚拟机(Virtual Machine),就是一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。

  • 系统虚拟机:Visual Box,VMware就属于系统虚拟机,他们完全是对物理计算机的仿真,提供了一个可运行完成操作系统的软件平台。
  • 程序虚拟机:代表就是典型的Java虚拟机,它专门为执行单个计算机程序而设计,在Java虚拟中执行的指令我们称之为Java字节码指令。

无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中。

。。。。。。。。。。。。。。。。。。。。。。。

  • JVM
  • Java虚拟机(JVM)是一台执行Java字节码的虚拟计算机,它拥有独立的运行机制,其运行的Java字节码也未必由Java语言编写而成。
  • JVM平台的各种语言可以共享Java虚拟机带来的跨平台性、优秀的垃圾回收器,以及可靠的即时编译器。
  • Java技术的核心就是Java虚拟机,因为所有的Java程序都运行在Java虚拟机内部。

Docker局限性:

Docker用于应用程序时是最有用的,但并不包含数据日志、数据库等通常放在Docker容器外 。一个容器的镜像通常都很小,不用和存储大量数据,存储可以通过外部挂载等方式使用,比如:NFS、ipsan、MFS等 ,或者docker命令 ,-v映射磁盘分区。

总之,docker只用于计算,存储交给别人。

通过docker架构图初步了解docker。

docker的工作流程。

  1. 启动docker
  2. 下载镜像到本地
  3. 启动docker容器实例

提示:大家可以去注册一个dockerhub,之后会详细给大家讲解它的作用(非常重要!连docker hub账号都没有,玩什么docker!)。

Docker核心技术:

1、Namespace ---> 实现Container的进程、网络、消息、文件系统 和主机名的隔离。

2、Cgroup ---> 实现对资源的配额和调度。 注意:Cgroup的配额,可以指定实例使用的CPU个数,内存大小等。

Docker特性。

  • 文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。

  • 资源隔离:系统资源,像CPU和内存等可以分配到不同的容器中,使用cgroup。

  • 网络隔离:每个进程容器运行在自己的网路空间,虚拟接口和IP地址。

  • 日志记录:Docker将收集到和记录的每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或者批量检索

  • 变更管理:容器文件系统的变更可以提交到新的镜像中,并可重复使用以创建更多的容器。无需使用模板或者手动配置。

  • 交互式shell:Docker可以分配一个虚拟终端并且关联到任何容器的标准输出上,例如运行一个一次性交互shell。

    1、yum -y install docker
    2、yum -y install docker-engine
    3、yum -y install docker-ce

以上三种下载方式都正确。。Docker最早的版本名是docker和docker-engin,现在的名字是docker-ce和docker-ee。

详细下载看https://blog.csdn.net/m0_61503020/article/details/125456520?fromshare=blogdetail&sharetype=blogdetail&sharerId=125456520&sharerefer=PC&sharesource=2401_82607598&sharefrom=from_link

docker入门命令。

相关推荐
环流_2 小时前
【多线程初识】
linux·运维·服务器
CAAS_IFR_zp2 小时前
vConTACT3: 机器学习实现可扩展和系统的病毒层级分类
linux·运维·服务器
杨云龙UP2 小时前
ODA-Oracle实践记录:通过Navicat导出导入表CSV文件并清理重复数据,处理OA待办延迟刷新问题_20260416
linux·运维·服务器·数据库·sql·mysql·oracle
QC777LX3 小时前
传统电商专员转型AI电商运营师:选品到投放自动化流程
运维·人工智能·自动化
电商API_180079052473 小时前
电商数据采集实战:批量自动化获取淘宝、京东商品评论数据
大数据·运维·人工智能·数据挖掘·数据分析·自动化
START_GAME3 小时前
SQL Server 还原 .bak 文件(SSMS 图形界面法)
运维·服务器·数据库
June5613 小时前
SSH 免密 + 主机指纹登录完整安装步骤(macOS)
运维·macos·ssh
极客on之路4 小时前
线上 JVM 出问题
运维·服务器·jvm