Harbor 私有镜像仓库,用于制作自定义镜像
安装 Harbor
1)下载 Harbor
2)解压 Harbor
tar -zxvf harbor-offline-installer-v2.3.4.tgz -C /usr/local
3)进入目录,复制配置文件
cd /usr/local/harbor
cp harbor.yml.tmpl harbor.yml
4)修改 hostname,把 https 证书注释
5)执行,依赖于 docker、docker-compose
./install.sh
6)执行成功,测试访问 http://192.168.31.102:80/
默认账号:admin
默认密码:Harbor12345
7)添加个新的镜像仓库
Docker 推送 Harbor
1)配置 docker/daemon.json 文件:
vim /etc/docker/daemon.json
/etc/docker/daemon.json
内容如下:
{
"insecure-registries": ["192.168.31.102:80"]
}
2)重启 docker
systemctl restart docker
3)设置 Docker Harbor 账号密码
docker login -u admin -p Harbor12345 192.168.31.102:80
4)镜像改名
docker tag 8f00759f5b3f 192.168.31.102:80/repo/mytest:v1.0.0
5)推送
docker push 192.168.31.102:80/repo/mytest:v1.0.0
推送成功,测试访问 http://192.168.31.102:80/
6)拉取
docker pull 192.168.31.102:80/repo/mytest:v1.0.0
Jenkins 整合 Harbor
让 Jenkins 能使用 Docker 命令
1)在宿主机修改 docker.sock 的权限
cd /var/run
chown root:root docker.sock
chmod o+rw docker.sock
3)Jenkins 新增数据卷
vim /usr/local/docker/jenkins_docker/docker-compose.yml
/usr/local/docker/jenkins_docker/docker-compose.yml
- '/usr/bin/docker:/usr/bin/docker'
- '/etc/docker/daemon.json:/etc/docker/daemon.json'
4)重新构建 Jenkins
docker-compose up -d
5)进入容器测试 Docker 命令
docker exec -it jenkins bash
docker version
让 Jenkins 制作自定义镜像并推送 Harbor
1)删除 mytest 项目下 docker-compose.yml
2)提交推送后在 GitLab 给项目打标签 v3.0.0
3)在 Jenkins 项目配置中删除之前的构建操作
4)添加新的构建操作
mv target/*.jar docker/
docker build -t mytest:$tag docker/
docker login -u admin -p Harbor12345 192.168.31.102:80
docker tag mytest:$tag 192.168.31.102:80/repo/mytest:$tag
docker push 192.168.31.102:80/repo/mytest:$tag
5)登录 Jenkins 重新构建
6)登录 Harbor 查看是否构建成功
Jenkins 通知目标服务器运行 Docker 镜像
1)创建脚本文件:
/root/deploy.sh
harbor_addr=$1
harbor_repo=$2
project=$3
version=$4
container_port=$5
host_port=$6
imageName=$harbor_addr/$harbor_repo/$project:$version
echo $imageName
containerId=`docker ps -a | grep ${project} | awk '{print $1}'`
echo $containerId
if [ "$containerId" != "" ] ; then
docker stop $containerId
docker rm -f $containerId
fi
tag=`docker images | grep ${project} | awk '{print $2}'`
echo $tag
echo $imageName
if [[ "$tag" =~ "$version" ]] ; then
docker rmi -f $imageName
fi
docker login -u admin -p Harbor12345 $harbor_addr
docker pull $imageName
docker run -d -p $host_port:$container_port --name $project $imageName
echo "SUCCESS"
2)修改执行权限
chmod a+x deploy.sh
3)加入环境变量
echo $PATH
mv deploy.sh /usr/bin/
4)Jenkins 增加字符参数
5)Jenkins 增加构建后操作
6)执行构建,构建成功访问 http://192.168.31.102:8081/test
文档信息
- 本文作者:carpe
- 本文链接:https://carpedx.com/wiki/docker-harbor/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)