通过docker启动jenkins,又在jenkins中运行docker命令
不同技术栈构建流程都大同小异,详见jenkins doc
通过jenkinsci/blueocean构建的流水线项目,默认会使用docker环境,在构建时会报如下错误
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
是因为:docker客户机安装在jenkinsci/blueocean映像上,而不是守护进程上。Docker客户机将使用守护进程(默认情况下通过套接字unix:///var/run/ Docker .sock)。Docker客户端需要一个Docker守护进程才能工作
可以使用:使用docker-in-docker (DinD)映像解决
docker run --name docker-dind --privileged -d docker:stable-dind
docker run --name jenkins --link=docker-dind -d jenkinsci/blueocean
docker exec jenkins docker -H docker-dind images
REPOSITORY TAG IMAGE ID CREATED SIZE
Docker守护进程在Docker -dind容器中运行,可以使用相同的主机名访问它。您只需要为docker客户机提供守护进程主机。
还可以在启动jenkins时通过使用DOCKER_HOST env变量解决:
docker run -p 8080:8080 --user root -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean