Jenkins打Docker映象推送到私有倉庫

趙小胖0914發表於2020-09-23

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/

相關文章