docker idea-maven-私有仓库(boot打包直接推送你的私有静态仓库)

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

发布了143 篇原创文章 · 获赞 41 · 访问量 59万+

猜你喜欢

转载自blog.csdn.net/qq_29257691/article/details/100095623