说明: 总的目标是在k8s集群部署gitlab、jenkins,并且在本地提交代码到gitlab后jenkin流水线可以自动编译打包成为docker镜像然后部署到k8s中并实现客户端外部域名访问,在文档分为多个部分,其中涉及的技术有docker安装、k8s搭建、部署gitlab、部署jenkins、部署sonarqube、gitlab和jenkin联动、jenkins和sonarqube联动、pipline脚本编写、istio部署、istio服务网关等…
在工作中我们往往时没有外网环境的, 所以我们就需要在内网搭建一个docker的镜像仓库供我们上传下载使用使用, 一般工作中搭建的仓库是harbor,这里我们搭建的是一个轻量级的镜像仓库registry,搭建方法也是使用docker去启动registry
1.下载registry镜像
docker pull registry:2
2.运行registry
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name registry registry:2
/opt/registry: 是宿主机的目录
/var/lib/registry: 是容器内需要挂载的目录
3.配置docker
#宿主机上执行: echo ‘{ “insecure-registries”:[“192.168.100.100:5000”] }’ > /etc/docker/daemon.json
192.168.100.100是宿主机的IP地址
#重启docker : systemctl restart docker
注意:如过不做配置 在执行push命令会出现错误“Error response from daemon: Get https://192.168.100.100:5000/v2/: http: server gave HTTP response to HTTPS”
4.推送镜像到仓库
#首先在宿主机下载一个nginx镜像
docker pull nginx:latest
#更改镜像tag
docker tag nginx:latest 192.168.100.100:5000/nginx:latest
#推送镜像到registry
docker push 192.168.100.100:5000/nginx:latest
5. 查看镜像
#查看registry仓库所有镜像
curl -XGET http://192.168.100.100:5000/v2/_catalog
#查看nginx镜像的所有tag(也就是版本)
curl -XGET http://192.168.1.234:5000/v2/nginx/tags/list
注意:上面的url也可以在浏览器上执行
6. 下载镜像
上传完镜像后我么就可以在任何网络可达的机器上去拉取镜像了 命令如下:
docker pull 192.168.100.100:5000/nginx:latest
注意: 拉取前在本机器上要先配置docker(配置方法见第3步:配置docker)