10分钟自建企业级Docker镜像仓库!这个开源项目太顶了( 二 )

  • 我们可以使用docker images命令查看下安装Harbor安装的Docker镜像,还挺多的;
REPOSITORYTAGIMAGE IDCREATEDSIZElatestdc3bacd8b5ea8 days ago1.23MBgoharbor/chartmuseum-photonv1.10.601b70eccaf712 weeks ago178MBgoharbor/harbor-migratorv1.10.6a5d4a4ee44e42 weeks ago356MBgoharbor/redis-photonv1.10.699e25b65195c2 weeks ago132MBgoharbor/clair-adapter-photonv1.10.6aa72598ecc122 weeks ago61.3MBgoharbor/clair-photonv1.10.6da1b03030e342 weeks ago171MBgoharbor/notary-server-photonv1.10.637c8bed3e2552 weeks ago142MBgoharbor/notary-signer-photonv1.10.6c56d822209292 weeks ago139MBgoharbor/harbor-registryctlv1.10.61d3986d90c652 weeks ago101MBgoharbor/registry-photonv1.10.63e669c8204ed2 weeks ago83.7MBgoharbor/nginx-photonv1.10.6a39d8dd460602 weeks ago43.7MBgoharbor/harbor-logv1.10.61085d3865a572 weeks ago106MBgoharbor/harbor-jobservicev1.10.6aa05538acecf2 weeks ago143MBgoharbor/harbor-corev1.10.6193e76e6be5d2 weeks ago129MBgoharbor/harbor-portalv1.10.6942a9c4488502 weeks ago51.8MBgoharbor/harbor-dbv1.10.637da2e5414ae2 weeks ago170MBgoharbor/preparev1.10.635f073e33ec52 weeks ago177MB复制代码
  • 访问Harbor的管理界面,输入账号密码admin:Harbor12345登录即可,访问地址:http://192.168.3.101/

10分钟自建企业级Docker镜像仓库!这个开源项目太顶了

文章插图
 
使用
接下来我们就可以使用Harbor来管理我们的镜像了 。
  • 首先点击新建项目按钮,新建一个项目:

10分钟自建企业级Docker镜像仓库!这个开源项目太顶了

文章插图
 
  • 这里新建一个叫做test的私有项目;

10分钟自建企业级Docker镜像仓库!这个开源项目太顶了

文章插图
 
  • 由于docker login命令默认不支持http访问,所以我们需要手动开启,使用Vim编辑器修改docker的配置文件daemon.json;
vi /etc/docker/daemon.json复制代码
  • 添加一行insecure-registries配置即可,允许使用非安全方式访问Harbor镜像仓库,注意不要少了端口号80;
{ "registry-mirrors":["https://xxx.aliyuncs.com"], "insecure-registries":["192.168.3.101:80"]}复制代码
  • 再次重新启动docker服务;
systemctl restart docker复制代码
  • 再次使用install.sh启动Harbor服务;
./install.sh复制代码
  • 使用docker login命令访问Harbor镜像仓库,注意加上端口号为80;
[root@linux-local harbor]# docker login 192.168.3.101:80Username: adminPassword: WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded复制代码
  • 编写Dockerfile脚本,用于构建Docker镜像,一个最简单的busybox脚本如下;
FROM busybox:latest复制代码
  • 使用如下命令构建一个自己的busybox镜像;
docker build -t 192.168.3.101:80/test/busybox .复制代码
  • 将自己构建的busybox镜像推送到Harbor镜像仓库;
docker push 192.168.3.101:80/test/busybox复制代码
  • 推送成功后在Harbor的管理界面中就可以查看到busybox镜像了;

10分钟自建企业级Docker镜像仓库!这个开源项目太顶了

文章插图
 
  • 由于Harbor是用Docker Compose部署的,可以直接使用Docker Compose的命令来停止和启动 。
# 停止Harbordocker-compose stop# 启动Harbordocker-compose start复制代码结合SpringBoot使用
这里使用之前的mall-tiny-fabric项目来演示下,如何使用Maven插件一键打包并推送到Harbor镜像仓库 。
  • 首先修改项目的pom.xml文件,修改推送的镜像仓库地址,并添加认证信息即可;
<plugin><groupId>io.fabric8</groupId><artifactId>docker-maven-plugin</artifactId><version>0.33.0</version><executions><!--如果想在项目打包时构建镜像添加--><execution><id>build-image</id><phase>package</phase><goals><goal>build</goal></goals></execution></executions><configuration><!-- Docker 远程管理地址--><dockerHost>http://192.168.3.101:2375</dockerHost><!-- Docker 推送镜像仓库地址--><pushRegistry>http://192.168.3.101:80</pushRegistry><!-- 认证信息--><authConfig><push><username>admin</username><password>Harbor12345</password></push></authConfig><images><image><!--由于推送到私有镜像仓库,镜像名需要添加仓库地址--><name>192.168.3.101:80/mall-tiny/${project.name}:${project.version}</name><!--定义镜像构建行为--><build><!--定义基础镜像--><from>JAVA:8</from><args><JAR_FILE>${project.build.finalName}.jar</JAR_FILE></args><!--定义哪些文件拷贝到容器中--><assembly><!--定义拷贝到容器的目录--><targetDir>/</targetDir><!--只拷贝生成的jar包--><descriptorRef>artifact</descriptorRef></assembly><!--定义容器启动命令--><entryPoint>["java", "-jar","/${project.build.finalName}.jar"]</entryPoint><!--定义维护者--><maintainer>macrozheng</maintainer><!--使用Dockerfile构建时打开--><!--<dockerFileDir>${project.basedir}</dockerFileDir>--></build><!--定义容器启动行为--><run><!--设置容器名,可采用通配符--><containerNamePattern>${project.artifactId}</containerNamePattern><!--设置端口映射--><ports><port>8080:8080</port></ports><!--设置容器间连接--><links><link>MySQL:db</link></links><!--设置容器和宿主机目录挂载--><volumes><bind><volume>/etc/localtime:/etc/localtime</volume><volume>/mydata/app/${project.artifactId}/logs:/var/logs</volume></bind></volumes></run></image></images></configuration></plugin>复制代码


推荐阅读