1.搭建一个镜像仓库管理系统需要3个步骤:
a.生成一个认证文件,rsa的认证文件。
b.创建一个仓库容器。
c.创建一个仓库web管理系统。
a.
常见文件夹
mkdir volume
mkdir registry-chen
mkdir conf
2.生成一个认证文件,rsa的认证文件。
在/data/volume/registry-chen目录下执行 以下命令:
openssl req -new -newkey rsa:4096 -days 365 -subj "/CN=localhost" -nodes -x509 -keyout conf/auth.key -out conf/auth.cert
3.创建一个仓库容器。 在 /data/volume/registry-chen/conf
创建一个配置文件:registry-chen.yml
a.==============配置文件=======================
version: 0.1
#镜像存储地方
storage:
filesystem:
rootdirectory: /var/lib/registry
#镜像的删除权限,enabled: true代表开启删除权限
delete:
enabled: true
log:
level: info
#开启仓库的网络,端口号为5000
http:
addr: 0.0.0.0:5000
b.==============创建仓库命令=======================
docker run \
-v /data/volume/registry-chen/conf/registry-chen.yml:/etc/docker/registry/config.yml:ro \
-v /data/volume/registry-chen/conf/auth.cert:/etc/docker/registry/auth.cert:ro \
-p 5000:5000 --name registry-chen -d \
--privileged=true \
registry
b.1.推送镜像到私有仓库(注意:记得改本地hosts)
1.1在推送 仓库之前需要把 当前的仓库名字 写进host文件中 才能push 进去
vi /etc/hosts
1.2 按 i 键 进入编辑模式
然后添加数据
127.0.0.1registry-chen(你的仓库名字)
按ESC :wq 退出保存
使hosts生效
source /etc/hosts
2.开启docker远程API
a.vi /usr/lib/systemd/system/docker.service
在配置文件中,加入:
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
b.重启docker
systemctl daemon-reload
systemctl restart docker
c.验证docker远程api是否生效
netstat -anp|grep 2375
curl 127.0.0.1:2375/info
4.创建一个仓库web管理系统。
创建一个配置文件:registry-web.yml
a.==============配置文件=======================
registry:
# 指定registry的地址(注意:registry-chen为仓库的容器名字)
url: http://registry-chen:5000/v2
#仓库的名称(注意:registry-chen为仓库的容器名字)
name: registry-chen:5000
#是否为只读模式,设置true时,不允许删除镜像
readonly: false
#权限验证
auth:
#是否开启验证
enabled: true
#验证证书的key
key: /conf/auth.key
#证书颁发者的名称
issuer: chen
b.==============创建仓库web管理系统命令=======================
docker run \
-v /data/volume/registry-chen/conf/registry-web.yml:/conf/config.yml:ro \
-v /data/volume/registry-chen/conf/auth.key:/conf/auth.key \
-v /data/volume/registry-chen/db:/data \
-d -p 8080:8080 --link registry-chen --name registry-web \
--privileged=true \
hyper/docker-registry-web
注意:--link registry-chen很重要,没有的话,无法连接仓库。
5.登录仓库管理系统
http://132.232.66.251:8080/login/auth
用户名=admin
密码 =admin
6.给搭建好的仓库加个镜像
docker push registry-chen:5000/nginx:1.0.0
------------------------
idea maven 配置
registry-chen:需要在windows系统修改host,
132.232.66.251 registry-chen
或者 <dockerHost>http://132.232.66.251:2375</dockerHost>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- 添加docker maven插件 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.1.1</version>
<configuration>
<!-- 推送到指定的仓库 -->
<registryUrl>registry-chen:5000</registryUrl>
<!-- 开启docker远程API的端口 -->
<dockerHost>http://registry-chen:2375</dockerHost>
<!-- 指定镜像名称 格式:仓库域名:端口/镜像名字:镜像的版本号 -->
<imageName>registry-chen:5000/${project.artifactId}:2.0.0</imageName>
<!-- 指定基础镜像 类似dockerfile的FROM指令 -->
<baseImage>java:8</baseImage>
<!-- 配置容器启动后,执行什么命令,等于与 dockerfile的ENTRYPOINT -->
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<!-- 为dockerde tag指定版本号、latest -->
<imageTags>
<imageTag>${project.version}</imageTag>
<imageTag>latest</imageTag>
</imageTags>
<!-- 是否有push的功能 true代表有 -->
<pushImage>true</pushImage>
<!-- push后是否覆盖已存在的标签镜像 -->
<forceTags>true</forceTags>
<!-- 复制jar包到docker容器指定的目录 -->
<resources>
<resource>
<targetPath>/</targetPath>
<!-- 指定要复制jar包的根目录,${project.build.directory}代表 target的目录 -->
<directory>${project.build.directory}</directory>
<!-- 指定要复制的文件,${project.build.finalName}代表打包后的jar -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
我的idea 配置命令好像不行, 目前我是在 cmd里面运行命令的
mvn -f pom.xml clean package -DskipTests docker:build