IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Docker入门教程101 -> 正文阅读

[系统运维]Docker入门教程101

虚拟化技术

虚拟化技术从1960年代诞生,到2000年左右成为商业产品开始蓬勃发展,比如著名的VMWare, VirutalBox, KVM, Docker等。

目前大家熟知的虚拟化技术包括虚拟机(VM)和容器(Container)。

虚拟机技术促进了云计算的发展,让云计算厂商可以提供大量机器实例给到用户。

容器技术促进了云原生的发展,让运行在云环境的应用可以更好地享受云的优势。

从传统的物理机,到进化的虚拟机,各自的逻辑架构如下所示:

?

?

虚拟机技术里的Hypervisor有2种类型:

  • 第一种:直接和硬件交互,不经过宿主机操作系统,比如HyperKit(Mac OSX),Hyper-V(WIndows),KVM(Linux)。
  • 第二种:宿主机操作系统上的一个应用,上面虚拟机示意图表示的是这个类型的Hypervisor,比如VirtualBox/VMWare。

Docker是什么

Docker没有严格的定义,Docker本质上是利用容器虚拟化技术,让开发者可以将他们的应用、依赖库和配置文件打包到一个可移植的镜像文件里,然后发布到任何流行的Linux机器上运行。

运行这个镜像文件会生成一个虚拟容器,应用程序在这个容器里运行,就好像在真实的物理机上运行一样。

容器化技术和Docker不能划等号,最早的容器技术是2008年发布的LXC(Linux Container),但是不够好用,Docker基于LXC做了很多对应用开发友好的封装和改进,真正带动了容器化技术的流行。

后面随着Docker自身的技术架构演进,放弃了使用LXC,转而使用自研的libcontainer来和Linux kernel交互,后面libcontainer为了符合OCI(Open Container Initiative)标准,又封装重构为现在著名的runC

Docker使用Go语言编写,底层实现上使用Namespace实现容器之间的资源隔离,使用cgroups(Control Groups)做资源限制。

容器技术的逻辑逻辑架构如下所示:


容器是被隔离的进程(isolated process),不要把容器理解为轻量级虚拟机,容器和虚拟机是2种完全不同的虚拟化技术。

?

Container Runtime:表示容器运行时,任何满足OCI标准的容器运行时都可以互相替换,就类比虚拟机里的Hypervisor也有VMWare和VirtualBox等不同的实现。目前最流行的容器运行时是由Docker捐献给CNCF的runC

Docker实现的容器技术和传统的虚拟机相比,除了有上面说的架构上的区别,其它区别如下:

特性Docker虚拟机
启动速度秒级分钟级
交付/部署开发,测试,生产环境一致-
性能近似物理机性能损耗大
镜像大小较小,KB-MB较大,GB
迁移/扩展跨平台,可复制-

以Docker为代表的容器技术和虚拟机都是虚拟化技术,两者并不是互相取代的关系,它们有各自的适用场景,还可以结合在一起使用。

Docker架构

Docker是c/s架构,架构图如下:

?

Docker daemon:简称dockerd,作为服务端,处理Client发过来的请求,管理Docker镜像、容器、网络和存储。

Docker client: 作为客户端和dockerd服务端交互,使用的是RESTful API。docker命令行工具CLI和带界面的docker客户端都可以称为Docker client。Docker client可以和多个dockerd交互。

Docker Registry:镜像仓库,用来存储Docker镜像,有公共仓库(public registry)和私有仓库(private registry),类似GitHub的Public Repo和Private Repo。使用docker pulldocker run命令时,会从我们配置的registry仓库拉取镜像。使用docker push命令,会把镜像推送到我们配置的registry仓库。

Docker images: Docker镜像,是一个只读文件,里面有创建Docker容器的指令。一个镜像可以基于其它镜像来创建,比如我们可以基于已有的ubuntu镜像,添加Nginx和自己的应用程序来创建一个新的镜像。如果要创建自己的镜像文件,需要创建名为Dockerfile的文件,在该文件里按照指定的语法规则来定义创建和运行镜像文件的步骤。

Docker containers:Docker容器,是镜像的运行实例,一个容器实际上就是一个被隔离的进程(isolated process)。Docker容器的生命周期如下图所示:

Docker Engine:包含有Docker daemon, RESTful API, Docker CLI。

?

Docker安装

安装Desktop即可,Desktop支持Mac, Windows和Linux系统,包含了使用Docker所需要的一切工具集。

安装步骤参考:https://docs.docker.com/get-d...

Docker使用

我们以官方的教学镜像作为简单示例。启动Desktop后,在电脑的终端上运行如下命令:

docker run -d -p 80:80 docker/getting-started

该命令如果发现本地没有docker/getting-started镜像文件,会从官方的镜像仓库Docker Hub上拉取镜像并运行。

-d: 让容器以后台模式运行。

-p 80:80:把主机的80端口映射到容器里的80端口。

docker/getting-started:镜像名称。

启动后,打开一个浏览器,访问?http://localhost/?就可以看到已经run起来的应用程序的界面了。

开源地址

文章和示例代码开源地址在GitHub:?https://github.com/jincheng9/...

公众号:coding进阶

个人网站:https://jincheng9.github.io/

References

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-01-04 13:49:25  更:2022-01-04 13:50:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 6:52:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码