欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Docker架构及使用场景

时间:2023-05-21
一、Docker背景

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后可以发布到任何流行的 Linux、Windows、Mac等机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。更重要的是容器性能开销极低。

Docker的意义:

对于开发人员:可以为开发团队提供一个完全一致的开发环境。对于测试人员:可以直接拿开发时所构建的镜像或通过dockerfile文件构建一个新的镜像开始工作了。对于运维人员:在部署时,可以实现应用的无缝移植。 二、Docker 架构

一个完整的Docker有以下几个部分组成:

DockerClient客户端Docker Daemon守护进程Docker Image镜像DockerContainer容器

说明:

Docker 使用客户端/服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker daemon 作为服务端在宿主主机后台运行,等待接收来自客户的请求,并处理这些请求(如:创建容器、运行容器、分发容器等)。Docker 客户端,则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon 交互。Docker客户端 和 Docker服务端既可以运行在一个机器上,也可通过 socket 或 RESTful API 来进行通信。Docker 容器通过 Docker 镜像来创建,容器与镜像的关系类似于面向对象编程中的对象与类的关系。

几个重要的概念:

Docker 镜像(Image)

Docker 镜像(Image)是用于创建 Docker 容器的模板, Docker镜像相当于是一个 root 文件系统。比如:官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

Docker 容器(Container)
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。Docker 容器通过 Docker 镜像来创建。

Docker 仓库(Repository)
Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

Docker 客户端(Client)
Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。

Docker 主机(Host)
一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker Machine
Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

三、Docker与虚拟机的区别


相同:

容器和虚拟机都具有资源隔离的特点。

不同:

容器虚拟化的是操作系统(即不同的容器共用宿主机的内核、硬件资源);虚拟机虚拟的是硬件(即不同的虚拟机具有独立操作系统内核、硬件资源)。单机可以支持上千个容器;单机一般只支持几个虚拟机(因为只是获得宿主机的部分硬件资源的)。容器的性能接近原生宿主机;虚拟机的性能较弱(因为只是获得宿主机的部分硬件资源的)。不同容器只能运行同一类型操作系统;不同虚拟机可以运行不同的操作系统。

微信公众号 - 稻哥说编程(RedCode1024)博主,从事程序开发10余年,分享有用的行业解决方案,欢迎留言交流。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。