Docker笔记 | 基础概念
Docker 基本架构
Docker 基本组成
-
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 | 系统调用参数 | 隔离内容 |
---|---|---|
UTS | CLONE_NEWUTS | 主机和域名 |
IPC | CLONE_NEWIPC | 信号量、消息队列和共享内存 |
PID | CLONE_NEWPID | 进程编号 |
Network | CLONE_NEWNET | 网络设备、网络栈、端口等 |
Mount | CLONE_NEWNS | 挂载点(文件系统) |
User | CLONE_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】,进入【管理控制台】,选择镜像工具里面的【镜像加速器】,就可以看到各个操作系统设置镜像加速器的方法了
测试一下默认的镜像地址的拉取速度
#安装好docker的最新版本后拉取一个centos的镜像
docker pull centos
#记录了一下拉取时间大楷50s,一共是231MB
配置阿里云镜像加速
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xpd691zc.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
再次测试下拉取速度
#记录了一下拉取时间12S,一共是231MB
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端口
首次登陆设置密码后即可登陆,默认本机的docker环境管理:
相关文章
- 使用docker搭建selenium分布式环境
- Docker打包错误:Failed to execute goal com.spotify:docker-maven-plugin:1.2.0:build (default-cli) on project security
- /var/lib/docker/overlay2 占用很大,清理Docker占用的磁盘空间
- Docker入门之七Dockerfile
- 【Docker】docker安装GitLab
- 使用weave管理docker网络
- docker学习-docker容器
- 【2】docker 与UFW
- Docker 容器概念
- Docker Dockerfile之镜像缓存
- Docker 一文教你清理docker空间释放磁盘空间
- python操作docker SDK:Docker SDK for Python
- docker环境下指定jvm参数
- 把本地修改的Docker镜像推送到Docker hub
- 【docker】手把手教学docker与docker-compose安装
- 【Docker】Windows将docker下载的镜像存放到其他盘
- 020-docker镜像UnionFS、Docker镜像加载原理、分层的镜像与容器、结合docker命令理解镜像
- 81.第十七章 企业级容器技术docker -- Docker 数据管理、Docker网络管理(九)
- 【云原生之Docker实战】使用docker部署DokuWiki知识库系统
- 【云原生之Docker实战】使用docker部署mm-wiki文档系统
- 【云原生之Docker】使用docker部署talebook个人图书管理平台
- 【云原生之Docker实战】使用docker部署ubuntu系统测试环境
- 【云原生之Docker实战】使用docker部署kodbox私有云
- Docker----执行docker pull 下载镜像时报dial tcp: lookup registry-1.docker.io on 192.168.1.1:53: no such host错
- Docker从0到1,一文学会基础概念、安装使用和集群管理
- Docker常用命令
- busybox编译安装并将其打包为docker基础镜像
- 【最全最详细Docker】用docker部署mysql、tomcat、nginx、redis 环境部署
- Docker学习笔记(五):Dockerfile生成历史查询、修改docker容器编码格式
- 猿创征文 | 国产数据库之使用PXD在Docker环境下部署PolarDB-X集群
- Docker--查看容器的启动命令(亲测有效)
- Docker 安装 KMS 服务器