目录

一.公有云

1.Docker为什么推送镜像到远程仓库

2.发布镜像到Docker Hub

3.发布镜像到阿里云

二.核心技术

1.基本架构

2.联合文件


一.公有云

1.Docker为什么推送镜像到远程仓库

如果我们想将这个镜像提供给别人使用时,我们可以将镜像推送到远程仓库,然后别人从远程仓库中下载即可。 远程仓库仓库 Docker Hub Docker HubDocker社区分享Docker镜像的网站/存储库。 阿里云容器镜像服务 ACR 阿里云容器镜像服务(简称 ACR )是面向容器镜像、 Helm Chart 等符合 OCI 标准的云原生制品安 全托管及高效分发平台。 ACR 支持全球同步加速、大规模 / 大镜像分发加速、多代码源构建加速等全链路提效,与容器服务 ACK 无缝集成,帮助企业降低交付复杂度,打造云原生应用一站式解决方案。

2.发布镜像到Docker Hub

略,以后用到再学。

3.发布镜像到阿里云

略,以后用到再学。

二.核心技术

1.基本架构

Docker归根到底是一种容器虚拟化技术。

Docker采用了标准的C/S架构,包括客户端和服务端两大部分。客户端和服务端既可以运行在一个机器上,也可通过socket或者RESTful API来进行容器通信。 服务端 Docker daemon一般在宿主主机后台运行,作为服务端接受来自客户的请求并处理。Docker基本架构理这些请求(创建、运行、分发容器)。在设计上,Docker daemon是一个非常松耦合的架构,通过专门的 Engine模块来分发管理各个来自客户端的任务。

客户端 Docker客户端则为用户提供一系列可执行命令,用户用这些命令实现与Docker daemon的交互。

sudo docker versionsudo docker -H tcp://127.0.0.1:1234 docker images

第二行命令的1234是访问服务端的默认端口,最后的docker images是该条访问服务端的指令访问到服务器之后想要执行的命令。

2.联合文件

联合文件系统是实现Docker镜像的技术基础。

联合文件系统(UnionFS)是一种轻量级的高性能分层文件系统,它支持将文件系统中的修改信息作为一次提交,并层层叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。

Dockerfile Dockerfile用于描述镜像的生成规则。Dockerfile中的每一条命令,都在Docker镜像中以一个独立镜像层的形式存在。 Image ImageDockerfile生成,呈现层级结构,每层镜像包含:镜像文件以及镜像json元数据信息。 Container ContainerImage的动态运行结果,概括而言,就是在Docker镜像之上,运行进程。

减少镜像的层数

镜像分层的好处

1. 基本上每个软件都是基于某个镜像去运行的,因此一旦某个底层环境出了问题,就不需要去修改全部基于该镜像的软件的镜像,只需要修改底层环境的镜像。 2. 这个好处也是最大好处,就是可以共享资源,其他相同环境的软件镜像都共同去享用同一个环境镜像,而不需要每个软件镜像要去创建一个底层环境。 3. 可以复用,节省磁盘空间,相同的内容只需加载一份到内存。 修改dockerfile之后,再次构建速度快。

优化前

上面的每一行指令都是一层,看到有好几行RUN,但是这好几行RUN是为了实现一个功能,却分了好几层,看看下面优化之后的写法优化后

使用&&将命令连接起来,需要换行时用\