Когда я использую «обновление службы докеров» в одноранговом контейнере в моем рое докеров, одноранговый узел заменяется новым.
У нового почти такое же имя, например. старый: peer1.org1-223d2d23d23 новый: one peer1.org1-345245634ff4
У него есть доступ ко всем файлам, таким как channel.tx, genesis.block и mychannel.block. в карте одноранговых / канальных артефактов. Но новый одноранговый узел не присоединился к каналу, и на нем не установлен чейнкод.
Я не могу присоединиться к каналу или установить цепной код, потому что для peer1.org1 это уже так. Однако если я найду самый старый блок канала, то смогу. Но я думаю, что получается странная ситуация.
Итак, мой вопрос
Как одноранговая служба в docker swarm может оставаться частью стека / роя после обновления службы или простоя, не будучи полностью новым одноранговым контейнером?
Когда вы обновляете контейнер в 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.