1、docker harbor搭建和使用(参考docker harbor搭建和使用)
(1) 官网获取 https://github.com/goharbor/harbor/releases harbor下载地址
eg.https://github.com/goharbor/harbor/releases/download/v2.7.0-rc1/harbor-offline-installer-v2.7.0-rc1.tgz
服务器
wget https://github.com/goharbor/harbor/releases/download/v2.7.0-rc1/harbor-offline-installer-v2.7.0-rc1.tgz
(2) 编辑 harbor.yml.tmpl
hostname 这个是域名,需要修改成大家公司自己的域名,如果是自己测试,可以随便填个域名,然后在/etc/hosts中解析域名到127.0.0.1就好
http.port 这个是端口,默认是80,一般不改,除非80端口被占用了
https 这个是https配置,需要提供SSL证书,如果是自己生成的证书,需要在docker配置文件中设置insecure-registries,否则docker会认为这是不安全的域名,下文会说,等会自己生成一个证书再回来修改
harbor_admin_password 这是harbor提供的管理后台的管理员密码
database 这个节点下面的配置是harbor自己依赖的数据库密码以及连接参数
data_volume 这是harbor数据存储的目录,不用修改,之后可以在docker-compose.yml中挂载宿主机目录,只要记住这个目录就好
(3) 下载镜像并生成docker-compose
mv harbor.yml.tmpl harbor.yml
./install.sh
安装完成后会在当前目录生成一些文件,其中有一个眼熟的文件docker-compose.yml,说明安装之后停止harbor可以用docker-compose down,再次启动harbor可以用docker-compose up -d命令,修改容器配置可以编辑docker-compose.yml文件
(4) 登录
用户名admin,密码是在harbor.yml中配置的
(5) 创建用户和项目
2、开启服务器docker远程连接
(1) 增加 -H tcp://0.0.0.0:2375
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
(2) 重启docker
systemctl daemon-reload
systemctl restart docker
(3) 关闭防火墙或者开放2375端口
3、docker登录harbor,验证远程
没有配置证书,或者证书是个人生成的情况下
vim /etc/docker/daemon.json
加入以下内容
##配置了域名的最好使用域名
{
"insecure-registries":["ip:port","域名:port"]
}
docker login 域名:port #docker login ip:port
登录成功后,就可以使用docker推送镜像到私人仓库
4、配置插件docker-maven-plugin
在maven的setting.xml中配置harbor账号与密码
<server>
<id>harbor</id>
<username>username</username>
<password>paswd</password>
<configuration>
<email>xxx</email>
</configuration>
</server>
</servers>
java pom.xml 配置插件docker-maven-plugin
<properties>
<java.version>14</java.version>
<!-- harbor远程地址-->
<docker.repository>ip:8080</docker.repository>
<!--项目名,需要和Harbor中的项目名称保持一致 -->
<docker.registry.name>project</docker.registry.name>
<docker.host>http://ip:2375</docker.host>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<!-- <executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>removeImage</goal>
<goal>build</goal>
</goals>
</execution>
</executions>-->
<configuration>
<!-- maven settings.xml 文件配置的server-id,配置server就可以直接推送到harbor repository仓库了 -->
<serverId>harbor</serverId>
//Harbor地址
<registryUrl>http://${docker.repository}</registryUrl>
<!-- 这是docker的服务地址,http:ip:2735-->
<dockerHost>${docker.host}</dockerHost>
<forceTags>true</forceTags>
<imageName>${docker.repository}/${docker.registry.name}/${project.artifactId}:${project.version}
</imageName>
<!-- 指定 Dockerfile 路径,此路径根据自己的文件路径调试,他正确才会有打包镜像日志输出,否则会卡住-->
<dockerDirectory>${project.basedir}/../docker</dockerDirectory>
<image>${docker.repository}/${docker.registry.name}/${project.artifactId}:${project.version}</image>
<newName>${docker.repository}/${docker.registry.name}/${project.artifactId}:${project.version}
</newName>
<!-- jar包位置-->
<resources>
<resource>
<targetPath>/config</targetPath>
<!--jar 包所在的路径 此处配置的 即对应 target 目录-->
<directory>${project.basedir}/src/main/resources</directory>
<include>bootstrap.yml</include>
</resource>
<resource>
<targetPath>/</targetPath>
<!--jar 包所在的路径 此处配置的 即对应 target 目录-->
<directory>${project.build.directory}</directory>
<!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
创建dockerfile docker/dockerfile
FROM adoptopenjdk/openjdk14:latest ##根据自己的jdk版本配置,在docker查询镜像即可
MAINTAINER money
#将maven构建好的jar添加到镜像中,第二个为别名
ADD *.jar cloud-app.jar
ADD config config
EXPOSE 8080
##指定配置文件,方便在容器中运行时挂载配置文件路径
ENTRYPOINT ["java","-jar", "cloud-app.jar", "--spring.config.location= /config/bootstrap.yml"]
5、说明
maven推送镜像到harbor的过程就是,通过maven把镜像推送到远程的docker,再由远程docker推送镜像到私人仓库