当前位置: 首页 > 知识库问答 >
问题:

如何构建一个启动.jar并在Raspberrypi4b上运行的Docker容器?

米俊晤
2023-03-14

我正在开发一个小应用程序,我想在Raspberry Pi上的docker容器中运行(模型4b,32bit,4GB RAM)。我目前正在学习Docker,到目前为止,我只在我的开发机器(一个mac)上构建和运行了一些东西。容器设置和罐子在那台机器上没有问题。

这是我非常基本的DockerFile:

FROM java:8
WORKDIR /
ADD my_jar.jar my_jar.jar
EXPOSE 8080
CMD java -jar my_jar.jar

正如你所看到的,没有什么进展。我想只是能够Docker构建。-t myDockerImage,然后运行我的容器。根据输出,生成成功,但运行失败,出现错误:

WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm/v7) and no specific platform was requested
standard_init_linux.go:219: exec user process caused: exec format error

我做了一些研究,我能找到的只是使用OpenJDK的建议。做了,却建不起来,就说:

no matching manifest for linux/arm/v7 in the manifest list entries

我在Docker Hub上环顾四周,但似乎没有适合这种架构的Java形象。或者我不知道该找什么...?

那么,我如何在docker容器中获得Java的这台机器(更好的是以一种相当容易,方便的方式,但如果这不存在,我很乐意这样做的困难的方式,无论这可能会带来什么)?

顺便提一下:这是lshw关于RPI的说明:

raspberrypi
    description: ARMv7 Processor rev 3 (v7l)
    product: Raspberry Pi 4 Model B Rev 1.1
    serial: 10000000b3320840
    width: 32 bits
    capabilities: smp

共有1个答案

阎冠玉
2023-03-14

默认情况下,它似乎是为另一个平台构建的。您是否尝试在构建映像时传递--platform=linux/arm/v7

看看这有没有帮助。

 类似资料:
  • 问题内容: 在容器内运行服务时,假设使用mongodb命令 将立即退出,并返回容器ID。在我的CI脚本中,我在运行mongo容器之后立即运行客户端以测试mongodb连接。问题是:由于服务尚未启动,客户端无法连接。除了在脚本中添加大字体外,我看不到任何等待容器启动并运行的选项。 Docker的命令在这种情况下不起作用,因为该容器不存在。是docker的限制吗? 问题答案: 如在docker 1.1

  • 在运行容器之后,我应该如何更改我的Dockerfile以使其具有一个正在运行的MySQL服务?

  • 在我进行任何代码更改后,我的典型开发步骤是: < li >更改代码并构建jar文件 < li >构建使用jar文件的docker映像 < li >取消当前的“docker-compose up”命令。 < li >再次运行" docker-合成"。 我的docker-compose文件有五个服务。在第三步,所有的容器都倒下了。理想情况下,我只需要重新运行我的应用程序容器。 我正在寻找一种方法,在批

  • 我已经在我的主机虚拟机上安装了docker。现在想用vi创建一个文件。 但它向我展示了一个错误:

  • 问题内容: 我正在使用Search Guard插件来保护由多个节点组成的elasticsearch集群。这是我的Dockerfile: 初始化SearchGuard(创建内部用户并分配角色)。容器启动后,我需要运行脚本。这是问题所在:除非运行Elasticsearch,否则脚本将不会初始化任何安全性索引。 脚本的内容是: 现在,我只是在容器启动后手动运行脚本,但是由于我是在Kubernetes上运

  • 我有一个Dockerfile来在容器中安装MySQL server,然后我这样开始: 但MySQL服务不会自动启动,我必须手动运行(从容器内): 如何在运行docker容器时自动启动MySQL服务?