docker 启动的 jenkins 中调用宿主机docker进行build

前言

期初有这个需求感觉就跟套娃一样,你在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

一句话解决

你可能感兴趣的:(docker,ubuntu)