Docker CI: Jenkins 主從模式的權限問題
一、概述
基於 Docker 集成 CI 環境。涉及技術:Linux(Ubuntu 14.04), Docker, Jenkins, Git/Gitlab, Web/Httpbin, Python/Pytest, UI/Selenium, Robotframework, Grid Server, Appium 等。
架構圖如下:
二、Docker 平臺(Centos7):權限問題
- Jenkins 報錯
- slave主機測試
$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/containers/json: dial unix /var/run/docker.sock: connect: permission denied
[mahuaping@XINDONG-QA-test002 ro-server-s-sonar]$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
三、Docker 平臺(Centos7):解決方法
- docker守護進程啓動的時候,會默認賦予名字爲docker的用戶組讀寫Unix socket的權限,因此只要創建docker用戶組,並將當前用戶加入到docker用戶組中,那麼當前用戶就有權限訪問Unix socket了,進而也就可以執行docker相關命令。
sudo groupadd docker #添加docker用戶組
sudo gpasswd -a $USER docker #將登陸用戶加入到docker用戶組中
newgrp docker #更新用戶組
sudo systemctl restart docker #重啓docker服務
docker ps #測試docker命令是否可以正常使用
- 重新Jenkins
問題解決!