前言

期初有这个需求感觉就跟套娃一样,你在docker 中调用docker,笑哭……这个也太逗了。
不过的确遇到了,因为jenkins 容器中没有docker ,所以在编译 docker build 的时候 会出现 docker command 不存在。
好吧,解决他!

解决

其实也很简单,把宿主机的 docker.socket 和 docker 挂在到容器内部,就可以使用了
docker-compose

version: "3"
services:
  jenkinsServer:
    image: jenkins/jenkins:latest
    volumes:
      - /data/mnt/jenkins/:/var/jenkins_home
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock 
      - /usr/bin/docker:/usr/bin/docker
    ports:
      - 9101:8080
      - 9102:50000
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
      placement:
        constraints: [node.role == manager]
    networks:
      - default

networks:
  default:
    external:
      name: unreal-network

以上就可以使用docker在容器内build了。

无权限的问题

docker 默认是使用 root 用户才能使用和访问的。如何解决呢?

sudo chmod a+rw /var/run/docker.sock

一句话解决

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐