Docker架构【如何提供服务;镜像和容器】及DockerHub镜像托管平台

Docker架构

Docker是一个CS架构的程序,由两部分组成:

服务端(server):由Docker Daemon守护进程负责接收命令或远程请求,处理Docker指令,管理镜像与容器。

客户端(client):通过命令或RestAPI向Docker服务端发送指令。

流程如下:

Client端发送指令至DockerServer,指令到达DockerServer后会被其中的docker daemon(守护进程)接收并处理。

以下列命令为例:

  1. docker build(构建镜像命令):docker daemon利用提供的数据去构建镜像。(流程:请看下图绿色线)
  2. docker pull(拉取镜像命令):docker daemon接收指令后便会去Registry(仓库)中拉取指定的镜像。(流程:请看下图红色线)
  3. docker run(运行镜像创建容器命令):docker daemon接收指令后便会帮助你完成指定镜像容器的创建。(流程:请看下图蓝色线)
    在这里插入图片描述
    建议:像mysql、redis、nginx等直接使用官方镜像即可,没必要自己构建;只有自己的微服务或者需要做一些深度定制的才需要构建。

镜像和容器

镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起的一个只读文件包(以防被污染)。

容器(Container):镜像中的应用程序运行后形成的进程就是容器,Docker会给容器进程做隔离,使其对外不可见。

上述可知,镜像是一个打包好的只读文件包,同时docker使用沙箱机制对其运行起来的进程做了隔离。也就是说,一个镜像可以安全的启动多次,进而形成多个进程。

既然镜像为只读文件包,可以安全的形成多个容器进程,那进程间的写操作又是如何隔离的?

:如下图所示,基于镜像创建容器时,容器会各自拷贝一份目录,写操作均基于自身拷贝后的文件目录,由此便完成了各自进程间的数据隔离。

在这里插入图片描述

DockerHub

DockerHub是一个官方的Docker镜像的托管平台(类似于GitHub的代码托管)。这样的平台称为Docker Registry

类似的Docker镜像托管平台还有国内的网易云镜像服务阿里云镜像库等。

我们为什么需要Docker Registry

因为开源应用程序繁多,打包往往是重复的劳动。为了避免这些重复劳动,人们将自己打包好的应用镜像(例如Redis、MySQL镜像)放到网络上共享使用。

所以,我们一方面将自己的镜像共享到DockerHub,另一方面也可以从DockerHub中拉取镜像来使用。
如下图:
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值