在docker容器中正常启动docker服务

在docker容器中正常启动docker服务

背景

在容器中,运行docker,是devops中无法避免的场景,通常被应用于,容器被作为执行机使用,且要运行容器类任务时,网上的方案通常为三类。参考:
How To Run Docker in Docker Container 3 Easy Methods,但如果我不想使用dind镜像去构建,不想用宿主机的docker.sock,不想使用sysbox,就想用我的自己提供的基础镜像去构建出来自带docker的镜像,这些方法就不行了,当然你也可以使用DOCKERHOST去连接到正常使用docker服务机器,去执行docker命令,但这种方式显然比较麻烦。所以最好的方法就是在容器中去安装docker服务,我以alpine为基础镜像,构建出可以运行docker服务的镜像。

dockerfile代码

FROM alpine:latest
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
&& apk add --no-cache curl \
&& apk add --no-cache iptables \
&& curl -O https://download.docker.com/linux/static/stable/x86_64/docker-20.10.21.tgz \
&& tar zxvf docker-20.10.21.tgz \
&& cp docker/* /usr/bin/ \
&& docker -v\
&& rm -rf /var/cache/apk/*

上面的docker安装步骤,是参考docker官网提供docker安装流程

构建及运行容器

构建

docker build -t dind-test:v1 -f dind.Dockerfile .

运行容器

docker run -it --privileged --name dind-1 dind-test:v1

运行dockerd

dockerd &
在这里插入图片描述

可以看到docker daemon已经启动起来了

测试

docker pull hello-world
在这里插入图片描述

可以看到docker可以在容器中正常运行了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值