容器嵌套,降本增效(Docker In Docker)

本文探讨了容器嵌套的三种主流方法:共享宿主机 dockerd 服务、独立隔离的容器环境(如 Docker 提供和 minikube 支持的)以及使用 Sysbox 运行时。每种方法都有其优缺点,适用于不同的场景。共享宿主机 dockerd 服务方便但隔离性较差,独立隔离环境提供更好的安全性但可能需要特权权限。Sysbox 提供了一种无需特权访问的解决方案,但尚未广泛应用。
摘要由CSDN通过智能技术生成

在这里插入图片描述

容器相比于 VM 虚拟机是属于弱隔离,在某些场景下需要增强容器的隔离或扩展应用场景来解决新的问题,如下场景在云原生实践过程中也经常会遇见,本文收集并分析了目前主流的容器嵌套方法,可根据当前团队的现状来综合评估后选择。

  • 使用容器来提供传统的操作系统运行环境。VMLC(类虚拟机容器) 是 VM Like Container 的缩写,其设计目标是为开发者在容器中提供类似虚拟机的环境,包括:systemd服务管理能力,sshd远程登录能力,docker/k8s嵌套能力等。
  • 在容器中嵌套运行容器,提供沙盒环境。
  • 在容器/POD 中运行 Kubernetes 集群。
  • 在流水线执行时任务本身是封装在容器中,但是流水线的执行过程可能会包含镜像的拉取、构建、上传、运行等任务场景。
  • 在 Jenkins 中,使用 Docker 容器作为构建的 Slave 节点。
  • 在短期使用环境运行容器时,例如学习容器的基本使用,可以快速创建和回收环境,并减少资源的消耗。
  • 在产品快速体验或 POC 场景下,将容器服务运行在容器中进行打包,快速部署运行。

在 Docker 中运行 Docker 目前可提供三类方法

  • 方法1:共享宿主机 dockerd 服务
  • 方法2:独立隔离的容器运行环境
  • 方法3:使用 Sysbox 运行时

方法1:共享宿主机 dockerd 服务

dockerd 服务在启动时会提供基于 socket 的连接方式,docker client 客户端可以选择使用 Socket 文件或 TCP/IP 的方式连接 Socket 来访问 dockerd 进行使用和管理功能,默认会使用 /var/run/docker.sock 的 socket 文件接口方式连接。

当在宿主机上运行容器 Container0 后,需要在该容器内继续运行 docker 命令来使用容器功能,可以参考如下步骤:

  • 准备 Container0 的容器镜像,该镜像提前安装好 docker 客户端命令;或者也可以直接使用 docker 官方提供的镜像 docker:latest
  • 基于上述镜像来运行 Container0 的容器,该步骤需要配置宿主机 dockerd 连接方式。
  • Container0 中使用 docker 客户端命令进行容器的使用和管理

容器的嵌套和管理示意图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值