k8s与docker的关系

本文探讨了Docker与Kubernetes(k8s)的关系,重点介绍了Docker的进程隔离机制(通过Namespace)、资源配额管理(CGroups)以及Docker镜像的使用,强调了Docker镜像在快速部署和存储效率上的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

k8s与Docker的关系


Docker VS 虚拟机

在这里插入图片描述

官方解释:Package Software into Standardized Units for Development, Shipment and Deployment.

Docker namespace 隔离

  1. Docker通过 Namespace 实现进程隔离
int clone(int (*child_func)(void *), void *child_stack, int flags, void *arg);
  1. Docker 的实现原理:Docker 如何通过 Namespace 聚合进程,实现进程间隔离。
docker run -d -p 8083:8083  nginx
ps -ef | grep docker 
ls -al /proc/[PID]/ns

Docker 的资源配额 CGroups

  1. Docker 使用CGroups实现资源的配额管理。
  • Cgroups (control groups)
  • 2007年由谷歌工程师研发
  • 2008年并入 Linux Kernel 2.6.24
  • C语言实现
  1. CGroups 限制进程的 CPU使用时间。 Docker中的 CPU,内存,网络的限制均通过 cgroups 实现

  2. 实践
    在宿主机上创建一个让 CPU 飙升到100%的进程: (此操作有风险,慎用)

while : ; do : ; done &

记录下 PID = 27358

cd /sys/fs/cgroup/cpu
mkdir cgroups_test
echo 20000 > /sys/fs/cgroup/cpu/cgroups_test/cpu.cfs_quota_us
echo 27358 > /sys/fs/cgroup/cpu/cgroups_test/tasks

清理该进程

Kill -9 27358 
  1. docker 里如何加参数进行资源配额
    docker run -it --cpus=“.5” nginx /bin/sh
    进入容器查看是否有对应的 cgroup 设置
cd /sys/fs/cgroup/cpu
cat cpu.cfs_quota_us

配置显示 500000,证明–cpus=".5"的参数已经生效

Docker 镜像

  1. Docker镜像的由来
  • 虽然 Docker 实现了运行环境的隔离,但如何将一个运行的容器快速进行启动,复制,迁移到其他的主机上运行?

  • 如果容器无法快速进行复制,迁移,那么和以 VMware 为代表的虚拟化技术相比并没有太多优势

  1. Docker 镜像的特性
  • Docker 镜像具备了应用运行所需要的所有依赖

  • 一次构建,处处运行

  • Docker 镜像的存储是基于 checksum 的去重存储,大大降低存储空间

  1. Docker 镜像常用命令
  • 下载 Docker 镜像

    docker pull nginx
    
  • 为镜像打版本号

    docker tag 
    
  • 上传 Docker 镜像

    docker push
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值