自制Java镜像发布到dockerhub公网使用

文章目录

    • 问题现象
    • 解决
      • 制作Java镜像
      • 发布使用

问题现象

  • 书接上回,上周处理了一个docker问题,写了篇博客:自定义docker镜像,ubuntu安装命令并导出
  • 我们使用谷歌的jib插件打包,详情可以参考这篇文章:Spring Boot:使用maven的jib插件打docker使用所需的镜像包
  • 我们打包导出的docker镜像,无法使用ping命令,报错,找不到这个命令bash: ping:command not found
  • 我们使用的是极简镜像eclipse-temurin:11-jre-focal,这个版本里的ubuntu没有安装不需要的命令
  • 当时使用的eclipse-temurin:11-jre-focal镜像,使用docker-compose.yml创建容器启动失败
Starting jre-focal ... done
Attaching to jre-focal
jre-focal exited with code 0
  • docker-compose配置为:
  jre-focal:
    image: eclipse-temurin-cy:11-jre-focal
    container_name: jre-focal
  • docekr ps -a看到服务状态STATUS为Exited (0)。因为只是创建了容器,不在运行状态

解决

制作Java镜像

  • 没法使用docker-compose启动,可以使用原始docker命令docker run以交互方式启动镜像
  • 命令为:docker run -it eclipse-temurin:11-jre-focal /bin/bash,启动成功,可以在容器中安装软件了。-it表示交互方式,/bin/bash为指定启动的终端
  • 此时可以更新并安装命令 apt-get update -y && apt-get -y install iputils-ping

在这里插入图片描述

  • 安装命令之后,就可以使用ping命令了

发布使用

  • 容器修改完成后,就可以使用docker commit导出为镜像了
  • 我们可以发布到本地docker里面,也可以发布到公网
  • 考虑到我们是使用Jib插件打包的,于是推送到docker hub
  • 首先需要在里面注册一个账号,然后新建一个repository

    在这里插入图片描述

  • 然后使用 docker login -u 用户名,输入密码,登录

    在这里插入图片描述

  • 最后使用docker commit ID名 用户名/仓库名推送到docker hub

    在这里插入图片描述

  • 这个时候就可以在docker hub官网看到,也可以直接使用了

    在这里插入图片描述

  • 在代码里直接引用名称即可,节选的jib打包配置如下:
				1363241277/jre11:11-jre-focal

				
                    com.google.cloud.tools
                    jib-maven-plugin
                    ${jib-maven-plugin.version}
                    
                        
                            ${jib-maven-plugin.image}
                            
                                
                                    ${jib-maven-plugin.architecture}
                                    linux
                                
                            
                        
                        
                            unit:latest
                        
                        
                            
                                bash
                                -c
                                /entrypoint.sh
                            
                            
                                8181
                                5701/udp
                            
                            
                                ALWAYS
                                0
                            
                            USE_CURRENT_TIMESTAMP
                            1000
                        
                        
                            src/main/docker/jib
                            
                                
                                    /entrypoint.sh
                                    755
                                
                            
                        
                    
                

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/9cc14cd255.html