当我在docker swarm中的对等容器上使用“ docker service update”时,对等方get被一个新的替换。
新名称几乎相同,例如 旧版:peer1.org1-223d2d23d23新版:一个peer1.org1-345245634ff4
它可以访问所有文件,例如channel.tx,genesis.block和mychannel.block。在对等/通道工件映射中。但是新对等方尚未加入该频道,因此未安装任何链码。
我无法加入频道或安装链码,因为对于peer1.org1已经是这样。但是,如果获取最旧的通道块,则可以。但这给我带来了奇怪的情况。
所以我的问题是
在服务更新或停机后,docker swarm中的对等服务如何仍能成为堆栈/群的一部分,而又不是一个全新的对等容器?
答案 0 :(得分:1)
当您在Docker,Docker Swarm或Kubernetes中升级容器时,实际上是在用另一个接收相同设置,环境,相同设置的容器替换该容器(即,实际上没有就地升级容器的概念),等
以独立模式运行Docker并使用卷时,这是相当透明的,因为新容器与以前的容器部署在同一主机上,因此将安装相同的卷等。
似乎您已经在从共享存储/文件系统中装入某种类型的卷以访问channel.tx等。
实际上,您还需要确保将卷用于对等方(以及与此相关的订购者等)使用/需要的持久性存储。
在对等方,core.yaml中的两个关键属性是:
peer.fileSystemPath
-默认为/var/hyperledger/production
,是保存分类帐,已安装链码等的位置。相应的环境变量为CORE_PEER_FILESYSTEMPATH
。
peer.mspConfigPath
-存储本地MSP信息的位置。相应的环境变量为CORE_PEER_MSPCONFIGPATH
。
您将需要将这些卷作为卷安装,并且鉴于您正在使用Swarm,这些卷将需要在所有Swarm主机上都可用的共享存储上可用。