1.准备好环境和远程镜像仓库
2.编写shell脚本
#!/bin/bash -il
#操作/项目路径(Dockerfile存放的路劲)
BASE_PATH=/var/jenkins_home/workspace/xrt
#源jar路径
SOURCE_PATH=/var/jenkins_home/workspace/xrt/target
#容器id
CID=$(docker ps | grep "app" | awk '{print $1}')
DATE=`date +%Y%m%d%H%M`
#构建docker镜像
function build(){
echo "开始构建镜像..."
cd $BASE_PATH
docker build -t app .
}
#运行docker容器
function run(){
backup
transfer
build
if [ -n "$CID" ]; then
echo "存在demo容器,CID=$CID,重启docker容器 ..."
docker stop $CID
docker rm $CID
docker run -d -p 8783:8783 app
echo "demo容器重启完成"
else
echo "不存在demo容器,docker run创建容器..."
docker run --name app -d -p 8783:8783 app
echo "demo容器创建完成"
fi
delnone
echo "push镜像到docker镜像仓库"
docker login http://ip:6001 -u admin -p xxx
docker tag app ip:6001/xrt/app:$DATE
docker push ip:6001/xrt/app:$DATE
echo "成功push镜像到docker镜像仓库"
}
#删除none镜像
function delnone(){
docker rmi $(docker images -f "dangling=true" -q)
echo "清除none镜像"
}
#入口
run
3.推送成功后在harbor查看
如果无法推送:
1.1 jenkins主机上的docker配置:insecure-registries ip:harbor的ip 端口为harbor的端口
vi /etc/docker/daemon.json
{ "registry-mirrors": ["https://wb2g6zxl.mirror.aliyuncs.com"],
"insecure-registries":["192.168.43.64:5000"]
}
1.2 然后手动输入如下命令登陆harbor进行测试:
docker login http://192.168.43.64:5000
# 输入账号密码
# 第一次登陆成功后,会把账号信息存储到文件中/root/.docker/config.json,下次再登陆的时候就不用输入账号和密码了
1.3如果可以登录成功则可以再Jenkins再次构建
1.4如果无法成功,查看harbor是否开始Jenkins服务器ip的访问权限
阿里云在安全组中配置