Docker技术与相关组件介绍
分类:知识集锦 发布时间:2023/4/11 17:04:30

Docker组件介绍

守护进程daemon:运行docker的后台进程

客户端client:与用户交互,打包,拉/推镜像,运行/停止/删除容器

镜像images:只读的,把环境和程序代码打成的包

仓库registries:保存镜像的地方

容器containers:从镜像创建的应用运行实例,在内存中实例化的应用

 

Docker镜像

1)镜像的种类

基本镜像是没有父镜像的镜像,通常是操作系统的镜像,如ubuntu、alpine或debian

子镜像是建立在基础镜像上的镜像,增加了额外的功能

官方镜像是Docker认可的镜像

用户镜像是用户创建和分享的镜像。建立在基础镜像的基础上,并增加了额外的功能镜像的格式是user/image-name

2)镜像标签

使用tag为容器镜像打标签:和hash id相比语义清晰,latest自动用在最新的镜像上

采用USERNAME/CONTAINER_NAME:TAG的命名方法

 

Docker仓库

用户可以创建一个本地仓库供内部使用,可以使用官方提供的工具docker-registry,并获取官方registry镜像来运行。仓库会被创建在容器的/var/lib/registry目录:

docker run --name registry -d -p 5000:5000 --restart=always –v /opt/data/registry:/var/lib/registry registry

推送到本地仓库:docker push localhost:5000/session-web:latest

查看私有仓库中镜像:curl localhost:5000/v2/_catlog

推荐使用仓库软件工具Harbor和Quay。

 

Docker运行过程

$ sudo docker run -i -t ubuntu /bin/bash

以上为例运行ubuntu镜像,按照顺序,Docker执行以下流程

拉取ubuntu镜像: Docker检查ubuntu镜像是否存在,如果在本地没有该镜像,Docker会从Docker Hub镜像仓库下载。如果镜像本地已经存在,Docker会使用它来创建新的容器。

使用本地ubuntu镜像创建一个新的容器,使用chroot创建根目录

分配文件系统并且挂载一个可读写的层: 容器会在这个文件系统中创建,并且一个可读写的层被添加到镜像中。

分配网络/桥接接口: 创建一个允许容器与本地主机通信的网络接口。

设置一个IP地址: 从池中寻找一个可用的IP地址并且服加到容器上。

指定运行的程序: 运行指定的程序/bin/bash

捕获并且提供应用输出: 连接并且记录标准输出、输入和错误可以看到程序是如何运行的

 

Docker核心原理

Docker项目来说,它最核心的原理实际上就是为待创建的用户进程:

启用Linux Namespace配置

设置指定的Cgroups参数

切换进程的根目录chroot

Rootfs保证了容器的一致性,使得容器无论是在本地、物理机、云服务器上都处于同样的运行环境

体验创新云技术带来核心业务效率显著提升
立即预约,加速企业数字化转型进程
Copyright ⓒ 2022 苏州博纳讯动软件有限公司 国徽 苏ICP备13004761号 法律声明及隐私政策