zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Docker笔记 | 基础概念

2023-09-14 09:15:28 时间

Docker 基本架构

Docker 基本组成

image-20230204175335218

  • Client:docker 客户端,操作docker服务的客户端(命令式或者界面)

  • DOCKER_HOST:Docker 主机,安装 Docker 服务的主机(一般客户端和服务端都会一个主机上)

  • Docker daemon:后台进程;运行在Docker服务主机的后台进程

  • Containers:容器;在Docker服务器中的容器(一个容器一般是一个应用实例,容器间互相隔离)

  • Images:镜像、映像、程序包;Image是只读模板,其中包含创建Docker容器的说明。容器是由Image运行而来,Image固定不变。

  • Registries:仓库;存储Docker Image的地方

Docker用Go编程语言编写,并利用Linux内核的多种功能来交付其功能。 Docker使用一种称为名称

空间的技术来提供容器的隔离工作区。 运行容器时,Docker会为该容器创建一组名称空间。 这些

名称空间提供了一层隔离。 容器的每个方面都在单独的名称空间中运行,并且对其的访问仅限于

该名称空间。

Docker 隔离机制

基于linux内核特性来实现

namespace资源隔离

namespace系统调用参数隔离内容
UTSCLONE_NEWUTS主机和域名
IPCCLONE_NEWIPC信号量、消息队列和共享内存
PIDCLONE_NEWPID进程编号
NetworkCLONE_NEWNET网络设备、网络栈、端口等
MountCLONE_NEWNS挂载点(文件系统)
UserCLONE_NEWUSER用户和用户组

cgroup资源限制

  • 资源限制:限制任务使用的资源总额,并在超过这个 配额 时发出提示
  • 优先级分配:分配CPU时间片数量及磁盘IO带宽大小、控制任务运行的优先级
  • 资源统计:统计系统资源使用量,如CPU使用时长、内存用量等
  • 任务控制:对任务执行挂起、恢复等操作
cgroup子系统资源限制内容
cpu使用调度程序控制任务对CPU的使用
cpuacct(CPU Accounting)自动生成cgroup中任务对CPU资源使用情况的报告
cpuset为cgroup中的任务分配独立的CPU(多处理器系统时)和内存
devices开启或关闭cgroup中任务对设备的访问
freezer挂起或恢复cgroup中的任务
memory设定cgroup中任务对内存使用量的限定,并生成这些任务对内存资源使用情况的报告
perf_event(Linux CPU性能探测器)使cgroup中的任务可以进行统一的性能测试
net_cls(Docker未使用)通过等级识别符标记网络数据包,从而允许Linux流量监控程序(Traw icController)识别从具体cgroup中生成的数据包

Docker 三大维度

镜像(images)

镜像是 Docker 的基石,重要性好比一所建筑的地基,容器是基于镜像启动和运行的,镜像和容器,是一对多的关系。Docker 镜像是一个层叠的只读文件模板。

容器(container)

容器是通过镜像启动的,是一个真正运行在宿主机上面的进程

镜像仓库(Registry)

镜像仓库是用来保存用户构建的镜像,有公有镜像仓库和私有镜像仓库之分

Docker 镜像加速

配置镜像加速

为什么需要镜像加速,是因为 Docker 默认是从官方拉取镜像,存在着网络不稳定性、在线拉取镜像速度慢的问题,切换国内的镜像地址后,可以从国内的镜像源进行一个镜像的拉取

配置阿里云镜像加速

登录阿里云首页后,选择【容器镜像服务ACR】,进入【管理控制台】,选择镜像工具里面的【镜像加速器】,就可以看到各个操作系统设置镜像加速器的方法了

image-20230204183425917

测试一下默认的镜像地址的拉取速度

#安装好docker的最新版本后拉取一个centos的镜像
docker pull centos
#记录了一下拉取时间大楷50s,一共是231MB

image-20230204184019353

配置阿里云镜像加速

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xpd691zc.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

image-20230204184133777

再次测试下拉取速度

#记录了一下拉取时间12S,一共是231MB

image-20230204184243417

Docker 可视化应用

Portainer

官网地址:Welcome - Portainer Documentation

Portainer Community Edition (CE) is our foundation. With over half a million regular users, CE is a powerful, open source toolset that allows you to easily build and manage containers in Docker, Docker Swarm, Kubernetes and Azure ACI.

**Portainer Community Edition(CE)**是我们的基础。CE 拥有超过五十万普通用户,是一个强大的开源工具集,可让您轻松地在 Docker、Docker Swarm、Kubernetes 和 Azure ACI 中构建和管理容器。

安装体验

#启动服务端
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
#访问默认的9000端口

image-20230204190603496

image-20230204190643104

首次登陆设置密码后即可登陆,默认本机的docker环境管理:

image-20230204190805800

image-20230204190846971