通過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