首页 > 其他分享 >制作基于 apline 的 jdk11 环境

制作基于 apline 的 jdk11 环境

时间:2023-09-23 10:45:45浏览次数:52  
标签:基于 apline -- jdk11 镜像 openjdk11 docker alpine

制作基于 apline 的 jdk11 环境

没有搞定的方法:

https://blog.csdn.net/qq_43059674/article/details/103356158

https://juejin.cn/post/7082235890180816904

以上两种方法都试过了,没有成功。也不想深究原因了,主要是执行到 RUN 命令时报错:

Step 4/10 : ADD openjdk-11.0.2_linux-x64_bin.tar.gz .
 ---> e689709810fd
Step 5/10 : RUN echo http://mirrors.aliyun.com/alpine/v3.10/main/ > /etc/apk/repositories &&   echo http://mirrors.aliyun.com/alpine/v3.10/community/ >> /etc/apk/repositories
 ---> Running in c95b21a59983
/bin/sh:  : not found
The command '/bin/sh -c echo http://mirrors.aliyun.com/alpine/v3.10/main/ > /etc/apk/repositories &&   echo http://mirrors.aliyun.com/alpine/v3.10/community/ >> /etc/apk/repositories' returned a non-zero code: 127

使用这里介绍的办法:https://www.coder.work/article/7507519

docker run -it alpine:3.11

# apk add openjdk11 安装 openjdk11的命令,类似于centos 的 yum install 

# java -version
openjdk version "11.0.5" 2019-10-15
OpenJDK Runtime Environment (build 11.0.5+10-alpine-r0)
OpenJDK 64-Bit Server VM (build 11.0.5+10-alpine-r0, mixed mode)

先拉取镜像 alpine:3.11,并启动一个容器,进入该容器,安装 openjdk11,这里应该是可以通过将下载的jdk11相关tar.gz复制到容器中,然后配置好环境变量,目的是可以全局访问 JAVA_HOME 的bin 目录,最好配置以下的环境变量

ENV JAVA_HOME=/cpc_docker/jdk/jdk1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH

将该容器提交为一个镜像

docker rename jovial_jepsen apline-openjdk11

docker commit -m '自己制作的apline-openjdk11奖项(描述信息)' -a '作者信息' apline-openjdk11 apline-openjdk11:1.0

将该镜像作为基础镜像打包新镜像的时候

# 设置基准镜像
FROM cumtsgw/alpine-openjdk11:v1.0 AS BUILD
# FROM 8feb2cdbcb55 AS BUILD
# 维护者
MAINTAINER nickel [email protected]
# 将指定的文件或者目录复制到镜像的指定目录中
ADD . /server
WORKDIR /server

ENV dir="hello"

ENV rtsp="hello"

# 启动端口
EXPOSE 8080

# 容器运行后默认将要执行jar包的命令
ENTRYPOINT ["sh", "-c", "java -jar demo-0.0.1-SNAPSHOT.jar --rtsp=${rtsp} --dir=${dir}"]

FROM 后面的镜像,不能是本地镜像,起码是要从仓库下载,下载过一次之后,后面打包是否还要下载就不知道了。

如果考虑使用本地镜像作为基础镜像,而仓库里没有的时候,会报错:

root@aliyun demo]# docker buildx build -f ./Dockerfile.apline -t demo-apline:v1.0 --platform=linux/amd64 -o type=docker .
[+] Building 3.2s (4/4) FINISHED                                                                                                                    
 => [internal] load build definition from Dockerfile.apline                                                                                    0.0s
 => => transferring dockerfile: 478B                                                                                                           0.0s
 => [internal] load .dockerignore                                                                                                              0.0s
 => => transferring context: 2B                                                                                                                0.0s
 => ERROR [internal] load metadata for docker.io/library/alpine-openjdk11:v1.0                                                                 2.4s
 => [auth] library/alpine-openjdk11:pull token for registry-1.docker.io                                                                        0.0s
------
 > [internal] load metadata for docker.io/library/alpine-openjdk11:v1.0:
------
Dockerfile.apline:2
--------------------
   1 |     # 设置基准镜像
   2 | >>> FROM alpine-openjdk11:v1.0 AS BUILD
   3 |     # FROM 8feb2cdbcb55 AS BUILD
   4 |     # 维护者
--------------------
error: failed to solve: alpine-openjdk11:v1.0: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed

在 x86的机器上运行 arm 环境

注册qemu-user-static
docker run --rm --privileged multiarch/qemu-user-static:register --reset

启动对应架构的docker镜像
docker run -itd --name armv8 multiarch/alpine:aarch64-edge /bin/sh

FROM alpine:3.15.4

apk add openjdk11 --repository=http://mirrors.aliyun.com/alpine/edge/community/
apk add ffmpeg --repository=http://mirrors.aliyun.com/alpine/edge/community/

apk add ffmpeg --repository=http://mirrors.aliyun.com/alpine/edge/community/

docker manifest create cumtsgw/alpine-jdk11:2022-04-24 cumtsgw/alpine-jdk11:amd cumtsgw/alpine-jdk11:arm
docker manifest push cumtsgw/alpine-jdk11:2022-04-24
docker manifest rm cumtsgw/alpine-jdk11:2022-04-24

docker run --rm --privileged docker/binfmt:66f9012c56a8316f9244ffd7622d7c21c1f6f28d

ls -al /proc/sys/fs/binfmt_misc/

标签:基于,apline,--,jdk11,镜像,openjdk11,docker,alpine
From: https://www.cnblogs.com/catelina/p/17723976.html

相关文章

  • LVM中对基于xfs的文件系统进行扩容
    Xfs是CentOS7的默认文件系统类型,而不同文件系统类型对应的创建、检查、调整命令不同。在xfs文件系统中,只能增大分区而不能减小。[root@localhost~]#ls/lib//modules/3.10.0-229.20.1.el7.x86_64/kernel/fs#查看内核所支持的所有文件系统类型binfmt_misc.kocephdlm......
  • opencv 基于形状的模板匹配
    1.问题或需求描述opencv基于形状的模板匹配测试2.解决方法或原理:主要步骤:使用opencv查找轮廓(findContours)匹配轮廓(形状)(matchShapes)的相似度python代码:importcv2#读取目标图像target_image=cv2.imread('target.png',cv2.IMREAD_COLOR)#读取模板图像template_image......
  • vapor 基于swift 的web 框架
    vapor是基于swift的web框架,包含了不少功能,官方也提供了不少扩展,同时官方提供的模版可以直接基于docker运行说明对于希望学习swift同时基于swift开发web应用的是一个不错的选择,可以学习练练手参考资料https://vapor.codes/https://github.com/vapor/vapor......
  • 华为datacom-HCIA​ 华为datacom-HCIA 1​ 1. 第四弹 5​ 1.1. OSPF认证 5​ 1.1.1.
    华为datacom-HCIA华为datacom-HCIA11.第四弹51.1.OSPF认证51.1.1.基于接口认证51.1.1.1.接口认证更优先61.1.1.2.[R2]interfaceg0/0/161.1.1.3.[R2-g0/0/1]ospfauthentication-modesimplehuawei61.1.1.3.1.明文认证61.1.1.4.[R2-g0/0/1]ospfauthentication-mo......
  • 3. 设计数据采集模块——基于FPGA的串口发送数据实验
    1.设计数据采集模块基于Send_en的可控设计。使得使用外部信号Data_done来启动数据发送成为可能。放弃使用Tx_done控制的做法。因此把控制Send_en的逻辑放到内部去完成。这样设计更加符合应用。1.1设计要求把Send_en的控制部分放到模块内部去,使用Send_Go作为输入信号可能......
  • 基于transbigdata包获取线路和站点的邻接表及shp文件
    importpandasaspdimportnumpyasnpimportgeopandasasgpdimporttransbigdataastbdimportjsonimportcsvimportnetworkxasnx#输入需要的城市place='深圳'#输入需要的线路line_range=[14,15,16,20]#遍历线路列表,挨个处理forxinline_range:try:......
  • 2. 串口发送数据任务——基于FPGA的串口发送数据实验
    1.串口发送数据任务任务要求:使用上一节课设计的串口发送模块,设计一个数据发送器,每10ms以115200的波特率发送一个比特,每次发送的数据比前一个数据大1(计数器)1.1设计思路模块化设计,使用上一节课设计好的发送模块1.2设计开始设计Uart_Byte_Tx(单字节发送)模块选择使用以......
  • 基于云服务器 EC2 的云上堡垒机的设计和自动化实现
    背景在很多企业的实际应用场景中,特别是金融类的客户,大部分的应用都是部署在私有子网中,如何能够让客户的开发人员和运维人员从本地的数据中心中安全的访问云上资源,堡垒机是一个很好的选择。传统堡垒机的核心实现原理是基于SSH协议的安全连接,通常运用SSH(SecureShell)协议实现数......
  • 基于事件的 JavaScript 编程:构建交互式 Web 应用程序
    了解事件 1.事件类型JavaScript支持多种事件类型。一些最常见的包括:鼠标事件:这些事件由用户与鼠标的交互触发,例如单击、悬停和拖动。键盘事件:这些事件在用户与键盘交互时发生,例如按下某个键或松开某个键。表单事件:与表单元素相关的事件,例如提交表单或更改输入字段的值。......
  • WTM(基于Blazor)访问共享文件夹
    有个需求,需要访问内网网络共享文件夹中的文件,有域控限制。一开始直接在本地映射一个网络驱动器,然后像本地磁盘一样访问共享文件夹里的文件,比如:Y:\。然后直接在程序中访问共享文件夹中的文件,如下代码:DirectoryInfodirectoryInfo=newDirectoryInfo(@"\\10.10.65.14\文件夹"......