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容器中,就可以執行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中應用保存,
接下來直接構建,查看控制臺輸出:

我們在看下阿里云容器服務的鏡像倉庫有沒有

BingGo!!!
打完收工~~~
趙小胖個人博客:https://zc.happyloves.cn:4443/wordpress/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/115040.html
標籤:其他
