Одноранговый контейнер заменен после обновления службы docker swarm

Когда я использую «обновление службы докеров» в одноранговом контейнере в моем рое докеров, одноранговый узел заменяется новым.

У нового почти такое же имя, например. старый: peer1.org1-223d2d23d23 новый: one peer1.org1-345245634ff4

У него есть доступ ко всем файлам, таким как channel.tx, genesis.block и mychannel.block. в карте одноранговых / канальных артефактов. Но новый одноранговый узел не присоединился к каналу, и на нем не установлен чейнкод.

Я не могу присоединиться к каналу или установить цепной код, потому что для peer1.org1 это уже так. Однако если я найду самый старый блок канала, то смогу. Но я думаю, что получается странная ситуация.

Итак, мой вопрос

Как одноранговая служба в docker swarm может оставаться частью стека / роя после обновления службы или простоя, не будучи полностью новым одноранговым контейнером?

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
0
102
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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.

Другие вопросы по теме