大家好,我叫mikechen。
Docker是云原生构建的基石,也是各大厂商检验的重点。了解有关@mikechen 的Docker 容器的更多信息。
本文收录于mikechen的30万+字原文《阿里架构师进阶专题合集》。
Docker
Docker 是一种容器,一种轻量级、可移植、独立的软件打包技术,允许应用程序几乎在任何地方以相同的方式运行。
容器技术本质上是计算机资源的隔离和控制。可以理解为一种沙箱技术。沙箱与容器完全相同。
Docker 是一个开源容器引擎,是容器概念的实际实现,诞生于2013 年初,最初是dotCloud 内的一个副项目。
为什么用Docker?
Docker作为一种新型的虚拟化方式,相比传统的虚拟化方式有很多优势。
Docker 在以下几个方面具有显着的优势:
1、提高系统资源利用率
Docker 容器是一种轻量级虚拟化技术,其用途与虚拟机相同:创建“隔离环境”。但是,容器使用进程级系统隔离,而不是操作系统级资源隔离。
如果对比上面两幅图,你可以看到虚拟机有一个操作系统,应用程序本身很小,但是操作系统让它变得非常大和笨重。
由于Docker没有操作系统,因此Docker应用程序是高度系统资源密集型的,并且可以在单个主机上同时运行。
2. 更快的交付和部署
Docker 容器极其轻量且快速,容器启动时间只需几秒,为您在开发、测试和部署过程中节省大量时间。
3、高效部署和扩展
Docker容器可以运行在几乎任何平台上,包括物理机、虚拟机、公有云、私有云、个人电脑和服务器。
这种兼容性允许用户直接将应用程序从一个平台迁移到另一个平台。
4. 更易于管理
使用Docker,只需进行很小的更改即可取代之前的大量更新工作。所有变更均分阶段分发和更新,从而实现自动化、高效的管理。
Docker核心技术
Docker技术的三个核心概念是Docker镜像、Docker容器、Docker仓库。
1.Docker镜像
Docker镜像是一个轻量级的、可执行的、独立的软件包,提供容器运行所需的程序、库、资源、配置等文件,为Docker容器提供静态文件系统运行环境。
简单理解,Docker镜像是Docker容器的静态视角,Docker镜像是启动Docker容器的基础。
您可以使用 Docker 镜像来列出本地主机上的Docker 镜像。
泊坞窗图像示例:
[root@mikechen ~]# docker image ls -aREPOSITORY TAG IMAGE ID CREATED SIZEnode 最新5377c9a2fb1f 5 周前943MBopenzipkin/zipkin 最新1850194f377c 3 个月前160MBrancher/Server stable 98d8bb571885 6 个月前1.08GB redis 5.0.7 ed8 df88d3b 8 个月前98.2MB 你好-全球最新bf756fb1ae65 10个月前13.3kB 参数介绍:
REPOSITORY:代表镜像的仓库来源。标签:图像ID:图像ID。尺寸:图像尺寸。
2.Docker容器
容器是存放东西的地方,比如书包里放着不同的文具,衣柜里放着不同的衣服,鞋架上放着不同的鞋子。
现在所谓的容器,是面向网站、程序甚至系统环境等应用。
容器技术本质上是计算机资源的隔离和控制。可以理解为一种沙箱技术。沙箱与容器完全相同。
Docker是一种容器,还有其他容器,例如CoreOS的rkt。
3.Docker仓库
Docker 仓库(Repository)是存储Docker 镜像的中心位置。
Docker 官方维护了一个公共仓库(https:/hub.docker.com),提供Docker 镜像来满足大多数需求。
Docker官方提供了Docker Hub镜像服务,国内一些云服务商也提供了类似Docker Hub的公共服务。
例子:阿里云、腾讯云、网易云、DaoCloul等镜像服务称为加速器。
您可以通过修改守护进程配置文件/etc/docker/daemon.json来使用加速器。
例如,如果您使用阿里云,您的配置可能如下所示:
Docker架构
Docker架构如下图所示:
Docke使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker主要由以下部分组成:
Docker Client 客户端Docker Daemon 守护进程Docker Image Mirror Docker Container 容器Docker 注册表仓库
Docker流程
Docker运行流程,主要会涉及到如下步骤:
用户使用Docker 客户端与Docker 守护进程建立通信并向后者发送请求。 Docker守护进程作为Docker架构的关键部分,首先提供了Docker服务器的功能,以便能够接收来自Docker的请求。客户端;Docker 引擎在Docker 内执行一组任务。每个任务在作业执行过程中都以作业的形式存在,如果需要容器镜像,则从Docker注册中心下载镜像。 Graph驱动程序通过图像管理来驱动图像,下载的图像以Graph格式保存。如果需要为Docker创建网络环境,可以通过网络管理驱动网络驱动来为Docker容器创建和配置网络环境。如果需要限制Docker容器的执行资源,或者执行用户指令等操作,可以使用Exec驱动来完成。
Docker使用
1.启动Docker
要启动容器,请运行启动命令。
命令是:
docker start [容器名称/id] Docker start命令本质上是为容器文件系统创建一个进程隔离空间。
2. 停止容器
命令是:
docker stop [容器名称/id] 3. 列出所有镜像。
输入以下命令:
docker images 通过docker images 查看本地已有的镜像文件。
$ docker imageREPOSITORY TAG 已创建图像ID 大小debian jessie f50f9524513f 5 天前125.1 MBdebian 最新f50f9524513f 5 天前125.1 MB4 获取图像。
从Docker 存储库获取最新版本的镜像并输入以下命令:
docker image pull [镜像名称] 示例:从Docker Hub 下载最新版本的Java 镜像。
docker pull java 示例:从Docker Hub 下载包含存储库的所有映像作为Java
docker pull -a Java
5. 运行镜像
输入以下命令:
docker run 镜像名称(例如拉取并运行Tomcat 镜像):
docker pull tomcatdocker 运行tomcat
Docker容器应用
1.作为云主机使用
与虚拟机相比,容器使用了一套非常轻量级的虚拟化技术,可以像管理过程一样快速启动、部署和升级。您可以像使用虚拟机一样使用它们。
于是,就有人直接使用Docker的Ubuntu或者其他镜像来创建容器,并将其作为轻量级虚拟机来使用。
2. 作为服务使用
Docker 容器最重要的价值在于它们提供了一组标准化的独立于平台的技术,可以简化服务的部署、升级和维护。
这种开箱即用的能力,可以运行在任何Docker 可以运行的环境中,只要将需要运维的各种服务打包到一个标准容器中,就是Docker 容器如此受欢迎的根本原因。世界。
3.利用微服务架构
如果以上两种应用场景还不足以体现相对于传统PaaS平台的显着优势。
无缝支持微服务架构等复杂灵活的使用场景的能力确实是革命性的。
微服务架构继续将传统的分布式服务拆分成更小的服务模块,这些能力可以与轻量高效的容器部署并行部署和升级。
最重要的是
本文收录于mikechen的30万+字原文《阿里架构师进阶专题合集》。
版权声明:本文转载于网络,版权归作者所有。如有侵权,请联系本站编辑删除。