测试开发技术网站
博客
设计
设计
开发
Python
测试
unittest
运维
Linux基础应用
CI/CD
CI/CD
数据库
数据库
云计算
云计算
云原生
云原生
爬虫
爬虫
数据分析
数据分析
人工智能
人工智能
登录
注册
Docker----Docker架构简介
收藏本文
作者:redrose2100 类别: 日期:2022-09-22 06:42:41 阅读:986 次 消耗积分:0 分
![](https://redrose2100.oss-cn-hangzhou.aliyuncs.com/img/06c9f19c-9517-11ee-b9ec-0242ac110004.png) [TOC] # 一、Docker架构 docker的架构图如下所示 ![](https://redrose2100.oss-cn-hangzhou.aliyuncs.com/img/20220922_055610.png) * Docker daemon docker daemon 是docker的服务端守护进程(dockerd),它监听docker api 请求,并且可以对docker对象进行操作,比如镜像、容器、网络和存储,平常我们使用的docker命令实际上就是docker client 向 docker daemon发送的rest api请求的过程。此外,docker daemon还可以通过与其他的docker daemon进程进行通信进而去管理docker对象资源。 * Docker client docker client也就是我们平时使用的docker命令,平时当我们执行docker命令时,实际上就是docker client向docker daemon服务发送docker api请求的过程。当然docker client也是可以向多个 docker daemon服务进程发送请求的。 * Docker Desktop docker desktop 可以理解为一个图形化的集成工具,它集成了docker daemon,docker client,docker compose等,目前一般主要用户在windows和mac系统的图形化界面。当然docker desktop是支持在linux上安装的,只不过话说回来,已经选择使用linux了,就没有必要去安装docker desktop了。因此如果是常年和linux打交道的开发运维人员,那么是没有必要去了解docker desktop的,当然docker desktop也自然不能作为docker的一个组件,它更像是一个图形化工具把docker client 和docker daemon包装了一下。 * Docker registries docker registries 是一个镜像存储服务,目前公共的公开的docker的镜像存储服务为docker hub,即https://hub.docker.com/ ,当执行docker pull、docker push等操作时,就是从docker hub上拉取镜像或者将本地镜像推送到 docker hub 服务,当然在企业内部也是可以通过一些开源工具进行私有hub服务的搭建,比如常见的harbor就是用于搭建私有部署的docker hub * Docker objects docker objects,即docker对象,主要是指docker中涉及的比如容器、镜像、网络、存储、插件等。 * Images docker images 是用来启动docker 容器使用的模板文件,通常情况下,docker镜像都是基于其他额基础镜像制作的,通过在dockerfile文件中增加自定义的内容,比如安装自定义软件和构建自定义应用程序等,因为docker镜像是根据dockerfile中自定义语句进行分层的,每次重新编译会根据dockerfile的变更情况进行重新编译,对于没有变化的层,不需要重新编译,只对dockerfile中有变更的层进行重新编译,这也是docker轻量级快速的一个重要原因。 * Containers docker container 容器可以理解为是docker image的一个实例,通过docker命令行或者docker api可以对docker容器进行创建、启动、停止、迁移或者删除等操作。容器与容器之间以及与宿主机之间都是隔离的,此外还可以通过设置docker 网络做到同一个网络下的容器互通,而不同网络下的容器是不通的。此外还可以通过存储挂载技术将容器中的目录挂载到宿主机上,这样当容器被删除后,挂载的目录时存储在宿主机上的,数据时不会丢失的,对于数据库、存储文件等一般都是需要进行存储目录挂载的。 # 二、docker run 命令的执行流程 比如执行如下命令,即使用Ubuntu镜像启动一个容器,并且以交互的方式进入docker容器中的shell窗口(/bin/bash) ```bash docker run -i -t ubuntu /bin/bash ``` * 步骤1:首先会检查本地是否有Ubuntu镜像,如果没有,则会向docker hub(https://hub.docker.com/ ) 请求下载 Ubuntu镜像。 * 步骤2:Docker 首先创建一个容器,相当于手动执行 docker container create 命令 * 步骤3:Docker创建一套可读可写的文件系统,并且允许正在执行的容器对此文件系统进行操作 * 步骤4:Docker创建一个网络接口,然后将容器链接到默认的网络上,同时为容器分配一个IP地址,此时容器可以通过宿主机上的IP地址与外部网络通信 * 步骤5:Docker启动容器,并且执行 /bin/bash 命令,并且通过 -i -t 参数指定了以交互的方式打开shell * 步骤6:当在容器中执行exit命令,此时会退出 /bin/bash 程序,容器停止运行,但是此时容器仍然存在,如果彻底删除容器需要使用删除命令将容器删除
始终坚持开源开放共享精神,同时感谢您的充电鼓励和支持!
版权所有,转载本站文章请注明出处:redrose2100, http://blog.redrose2100.com/article/379
上一篇:
Python实现将图片上传到基于阿里云OSS对象存储的图床
下一篇:
Docker----基于CentOS系统安装Docker
搜索
个人成就
出版书籍
《Pytest企业级应用实战》
测试开发技术全栈公众号
测试开发技术全栈公众号
DevOps技术交流微信群
加微信邀请进群
常用网站链接
开源软件洞察
云原生技术栈全景图
Python语言官方文档
Golang官方文档
Docker官方文档
Jenkins中文用户手册
Scrapy官方文档
VUE官方文档
Harbor官方文档
openQA官方文档
云原生开源社区
开源中国
Kubernetes中文文档
Markdown语法官方教程
Kubernetes中文社区
Kubersphere官方文档
BootStrap中文网站
JavaScript中文网
NumPy官方文档
Pandas官方文档
GitLink确实开源网站
数据库排名网站
编程语言排名网站
SEO综合查询网站
数学加减法练习自动生成网站
Kickstart Generator
文章分类
最新文章
最多阅读
特别推荐
×
Close
登录
注册
找回密码
登录邮箱:
登录密码:
图片验证码:
注册邮箱:
注册密码:
邮箱验证码:
发送邮件
注册邮箱:
新的密码:
邮箱验证码:
发送邮件