中国云计算产业迅速发展,越来越多的企业加快上云的步伐,云计算产业迎来爆发式增长。
云计算时代,各大基础设施纷纷上云,k8s和Docker无可避免的进行比较和提及,今天为大家好好介绍一下Docker,可以作为参考~
1.什么是Docker?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker由以下几个部分组成:
DockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器
2.Docker基本原理
Docker会在隔离容器中运行进程,当运行 docker run 命令时,Docker 会启动一个进程, 并为这个进程分配其独占的文件系统、网络资源和以此进程为根进程的进程组。
■ Docker 容器和虚拟机的区别
传统的虚拟机,如 VMWare 和 VirtuallBox 都是在宿主机上完整克隆出操作系统,自己所需要虚拟的东西都运行这个虚拟的操作系统里。而 Docker 则是将操作系统内核进行剥离,只对必要的那部分库或应用进行虚拟,因此能做到轻量级。
■ Docker 基础架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。
Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon 交互。
■ Docker 的特性
交互式Shell:Docker 可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互 shell
文件系统隔离:每个进程容器运行在完全独立的根文件系统里
写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间
资源隔离:可以使用 cgroup 为每个进程容器分配不同的系统资源
网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和 IP 地址
日志记录:Docker会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索
变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容 器。无需使用模板或手动配置
3.Docker基本概念
Docker 三个基本概念:
镜像(Image),容器(Container),仓库(Repository)。理解了这三个概念,就理解了 Docker 的整个生命周期
■ Docker 镜像:就是一个只读的模板。
镜像可以用来创建 Docker 容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
■ Docker 容器:Docker利用容器来运行应用。
容器是从镜像创建的运行实例 ,它可以被启动、开始、停止、删除。每个容器都是相互隔离 、保证安全的平台。可以把容器看做是一个简易版Linux 环境(包括 root 用户权限、进程空间、用户空间和 网络空间等)和运行在其中的应用程序。
■ Docker 仓库:仓库是集中存放镜像文件的场所。
有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括 Docker Pool 等,可以提供大陆用户更稳定快速的访问。当然,用户也可以在本地网络内创建一个私有仓库。
4.常见Docker操作指令
■ 获取镜像
■ 获取镜像创建虚拟机
完成后,即可随时使用该镜像了,例如创建一个容器,让其中运行 bash 应用。
■ 列出本地镜像
使用 docker images 显示本地已有的镜像。
■ 启动容器
先使用下载的镜像启动容器
在容器中添加 json 和 gem 两个应用。
■ 进入虚拟机
主要通过 docker attach 这个命令来完成。下面示例如何使用该命令。
Docker本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就似乎镜像文件。只有通过这个镜像文件才能生成Docker容器。镜像文件可以看作是容器的模板。Docker根据镜像文件生成容器的实例。同一个镜像文件,可以生成多个同时运行的容器实例。
关于传知摩尔狮
传知摩尔狮是广州传知信息科技有限公司旗下针对阿里云认证及云网创立的数字人才培训品牌,传知摩尔狮成立于2019年,致力于传播领先的教育理论,倡导更有效、更高效的学习范式,在IT职业教育领域,研究相关学科的教材教法和教学资源的整合,通过自主研发的学习服务平台推动IT人才的学习和发展,致力为中国云计算行业培养数字化人才。
摩尔狮在秉持传播知识、成就未来的理念下,2021年8月与阿里云达成深度合作,成为阿里云认证的战略级培训伙伴。并且,摩尔狮已和超过200家的互联网厂家签署了就业合作协议,为企业与国家持续培养输送面向未来的应用型人才。