Drone 迁移遇到docker打包无权限的问题

之前Drone在云服务器上、服务器快要到期了需要迁移到线下。迁移过程中Docker打包过程遇到了报错。

latest: Pulling from plugins/docker
Digest: sha256:fb41cf8f7df1ff4e62c74e10bf38d9a25a1d28298e6719386a641b1507c935a2
Status: Image is up to date for plugins/docker:latest
+ /usr/local/bin/dockerd --data-root /var/lib/docker --host=unix:///var/run/docker.sock
Unable to reach Docker Daemon after 15 attempts.
Registry credentials or Docker config not provided. Guest mode enabled.
+ /usr/local/bin/docker version
Client:
 Version:           20.10.14
 API version:       1.41
 Go version:        go1.16.15
 Git commit:        a224086
 Built:             Thu Mar 24 01:45:09 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
exit status 1

问题猜测、宿主机Docker版本不一致导致。

执行 rpm -qa|grep docker,之后发现新服务器是docker23、旧云上服务器为docker20。

先将docker进行卸载,再执行 yum install docker-ce-20.10.5 docker-ce-cli-20.10.5 docker-ce-rootless-extras-20.10.6。

降级完后、发现问题还是没有解决。

问题处理、开启Docker构建的Debug日志。

  - name: docker
    depends_on: [maven,node]
    image: plugins/docker
    privileged: true
    settings:
      username:
        from_secret: docker_username
      password:
        from_secret: docker_password
      registry: registry.qq.com
      repo: registry.qq.com/aa/bb
      debug: true

发现这个环节出现了问题。

failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: iptables failed: iptables -t nat -N DOCKER: modprobe: can't change directory to '/lib/modules': No such file or directory

但是将问题的命令[iptables -t nat -N]放到宿主机执行发现没有问题,猜测是容器环境下调用这个命令有问题。先验证一下自己的猜想。

docker run --entrypoint='' -v /var/run/docker.sock:/var/run/docker.sock -it plugins/docker sh

通过以上命令分别的新/旧服务器开启一个拟真的构建环境。再次在容器内部执行[iptables -t nat -N],发现新服务器确认有异常。

才发现新服务器为centos8.5、旧服务器为centos8.2,docker容器一致的apline3.15。找到问题根源了。

查询到资料https://www.cnblogs.com/redcat8850/p/16135814.html

最终通过在新宿主机上执行以下命令解决。

modprobe iptable_nat

modprobe iptable_filter

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Captcha Code