Jenkins打Docker鏡像推送到私有倉庫
因為我的Jenkins是安裝在群暉NAS中的docker分冈,所以我這邊就以Docker安裝Jenkins為例
echo '================Docker開始=============='
echo '================登陸阿里云私有鏡像倉庫=============='
# 定義鏡像名稱
IMAGE_NAME="scm"
# 查看當前目錄
pwd
# 進入web目錄Dockerfil所在目錄下,scm-web是我項目目錄扣讼,Dockerfile文件在該目錄下
cd scm-web
# 查看當前目錄
pwd
echo "# 登陸阿里云docker私有倉庫"
docker login --username=${username} --password=${password} registry.cn-hangzhou.aliyuncs.com
echo "# 打鏡像tag"
docker -t registry.cn-hangzhou.aliyuncs.com/hopefun/w2002:$IMAGE_NAME-${BUILD_NUMBER} $WORKSPACE/scm-web
echo "# 推送到倉庫"
docker push registry.cn-hangzhou.aliyuncs.com/hopefun/w2002:$IMAGE_NAME-${BUILD_NUMBER}
echo "# 刪除本地鏡像"
docker rmi registry.cn-hangzhou.aliyuncs.com/hopefun/w2002:$IMAGE_NAME-${BUILD_NUMBER}
echo "# 退出私有倉庫"
docker logout
echo '================Docker結束=============='
echo "部署鏡像 ===============>>>>>>>>>>>>>>>>>>>>>>> registry.cn-hangzhou.aliyuncs.com/hopefun/w2002:$IMAGE_NAME-${BUILD_NUMBER}"
如果上來就直接jenkins sh構建運行shell腳本會報:docker: command not found
如果普通docker馅扣,把宿主機的這兩個文件掛載到jenkins容器中瘾敢,就可以執(zhí)行docker命令了垛吗。
/var/run/docker.sock
/bin/docker
這個是我在網上看到的教程逮壁,我還沒試過凌盯。。掐隐。
有空會試試的狗热,看看行不行。
可以是我群暉NAS的docker虑省,我是先在NAS的shell命令下找到docker文件匿刮,之后將該文件復制到homes目錄下。
# 群暉NAS的docker文件在/usr/local/bin/下
cp /usr/local/bin/docker /volume1/homes/admin/jenkins_docker/bin
之后就在群暉NAS的web頁面去操作docker容器探颈,掛載目錄熟丸。
再然后jenkins sh構建運行shell腳本會報:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
這個是因為docker找不到守護進程,那么我們開啟宿主機的2375端口伪节。通過這種方式:docker -H tcp://172.17.0.1:2375 version
參考文檔:https://blog.csdn.net/liumiaocn/article/details/93749435
然后我們在腳本中添加:
echo '================Docker開始=============='
echo '================登陸阿里云私有鏡像倉庫=============='
# 定義鏡像名稱
IMAGE_NAME="scm"
# 查看當前目錄
pwd
# 進入web目錄Dockerfil所在目錄下,scm-web是我項目目錄光羞,Dockerfile文件在該目錄下
cd scm-web
# 查看當前目錄
pwd
echo "# 登陸阿里云docker私有倉庫"
docker login --username=${username} --password=${password} registry.cn-hangzhou.aliyuncs.com
echo "# 打鏡像tag"
docker -H tcp://172.17.0.1:2375 build -t registry.cn-hangzhou.aliyuncs.com/hopefun/w2002:$IMAGE_NAME-${BUILD_NUMBER} $WORKSPACE/scm-web
echo "# 推送到倉庫"
docker -H tcp://172.17.0.1:2375 push registry.cn-hangzhou.aliyuncs.com/hopefun/w2002:$IMAGE_NAME-${BUILD_NUMBER}
echo "# 刪除本地鏡像"
docker -H tcp://172.17.0.1:2375 rmi registry.cn-hangzhou.aliyuncs.com/hopefun/w2002:$IMAGE_NAME-${BUILD_NUMBER}
echo "# 退出私有倉庫"
docker logout
echo '================Docker結束=============='
echo "部署鏡像 ===============>>>>>>>>>>>>>>>>>>>>>>> registry.cn-hangzhou.aliyuncs.com/hopefun/w2002:$IMAGE_NAME-${BUILD_NUMBER}"
至此就在Jenkins中應用保存。
接下來直接構建怀大,查看控制臺輸出:
我們在看下阿里云容器服務的鏡像倉庫有沒有
BingGoI炊摇!化借!