如何在Docker容器中增加Corda节点的内存限制

问题描述 投票:1回答:2

[部署Corda节点时,JVM XmX参数用于增加节点的内存限制,但是当通过容器部署时,官方Corda映像会引发警告

警告:不建议在Docker容器中使用-Xmx标志。使用传递给容器的--memory选项限制堆大小

https://github.com/corda/corda/blob/release/os/4.4/docker/src/bash/run-corda.sh#L4

为容器设置内存限制是不够的,因为节点本身由于容器内的OOM异常而崩溃。

[使用开源时,您可以通过如下设置节点配置来绕过XmX参数:

custom = {
   jvmArgs: [ "-Xmx1G", "-XX:+UseG1GC" ]
}

有没有一种方法可以通过dockerfile或docker compose而不是配置来设置Corda节点的内存限制?

docker corda
2个回答
0
投票
这就是我在Corda开源4.4中所做的方式。

在我的Dockerfile中,我定义了:

... ENTRYPOINT ["node-entrypoint.sh"]

然后在node-entrypoint.sh中定义:

... export JVM_ARGS="-Xmx1G" ./bin/run-corda


0
投票
您可以使用docker-compose将JVM_ARGS作为环境变量传递给容器。

partya: image: corda/corda-zulu-java1.8-4.4 container_name: partya ports: - "10006:10201" environment: - JVM_ARGS=-Xmx6g -Xms2g -XX:+UseG1GC volumes: - ./Network/PartyA/node.conf:/etc/corda/node.conf - ./Network/PartyA/certificates:/opt/corda/certificates - ./Network/PartyA/persistence:/opt/corda/persistence - ./Network/PartyA/logs:/opt/corda/logs - ./Network/Shared/cordapps:/opt/corda/cordapps - ./Network/Shared/node-infos:/opt/corda/additional-node-infos - ./Network/Shared/network-parameters:/opt/corda/network-parameters

但是这不会帮助您摆脱警告,因为脚本仍将用于运行节点。

如果您真的想摆脱警告,可以使用command覆盖默认的运行脚本。

partya: image: corda/corda-zulu-java1.8-4.4 container_name: partya ports: - "10006:10201" command: java -Dcapsule.jvm.args=-Xmx6g -Xms2g -XX:+UseG1GC -jar /opt/corda/bin/corda.jar --base-directory /opt/corda --config-file /etc/corda/node.conf volumes: - ./Network/PartyA/node.conf:/etc/corda/node.conf - ./Network/PartyA/certificates:/opt/corda/certificates - ./Network/PartyA/persistence:/opt/corda/persistence - ./Network/PartyA/logs:/opt/corda/logs - ./Network/Shared/cordapps:/opt/corda/cordapps - ./Network/Shared/node-infos:/opt/corda/additional-node-infos - ./Network/Shared/network-parameters:/opt/corda/network-parameters

© www.soinside.com 2019 - 2024. All rights reserved.