docker in docker使用介绍

 我来答
京斯年0GZ
2022-07-12 · TA获得超过6211个赞
知道小有建树答主
回答量:306
采纳率:100%
帮助的人:74.7万
展开全部

在我们工作场景中,可能需要在容器内使用docker。例如在k8s中,想借助deployment的弹性扩缩容能力来测试harbor的推送镜像性能,此时就需要在容器内进行镜像构造,然后推送。
docker提供了一些相关的镜像给我们进行此类操作,下面做一个简单介绍。

该镜像包含docker client和docker damon。使用方式如下:

docker run -tid --name dind --privileged docker:dind sh -c "dockerd&"
docker exec -ti dind sh -c "docker ps -a"
首先需要启动dockerd,且要正常使用dockerd,需要指定容器为特权容器 --privileged 。
注:直接在 dockerd& 后面写docker命令(如 dockerd& sleep 10; docker ps -a )会报错,暂时未找到原因。

该镜像只包含docker客户端,需要单独挂载宿主机的daemon。
docker run -tid -v /var/run/docker.sock:/var/run/docker.sock docker:latest sh -c "docker ps -a"
注:一般需要root权限

包含了git命令的 docker:latest 镜像。

上述镜像镜像中的shell命令行只支持sh,而我需要使用到bash。因此自行制作了一个包含docker client的镜像。使用的基础镜像为ubuntu:14.04。

然后使用自己制作的镜像来起容器,并可以使用bash。
docker run -tid -v /var/run/docker.sock:/var/run/docker.sock mydockerclient:v1 bash -c "docker ps -a"

kaniko是谷歌提供的在k8s中构建镜像并推送到镜像仓库的镜像。在本地也可以直接使用。

关于在k8s中使用kaniko,可以参考: https://segmentfault.com/a/1190000039713484

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式