We know the chaincode is installed on every endoser peer, and only instantiated on one endoser peer.
1, so other peer will copy dev* image of chaincode and run it when needed?
Also, I found, when using composer to deploy/upgrade the chaincode, every endoser peer will run a ccenv docker container,
2, just the ccenv to build the chaincode, why not just use one peer to build the image and copy to other peer?
3, the ccenv build the chaincode, will be included in install step or the instantiate step for more clear instruction?
because i found too many ccenv run at the same time, often fails with one of them.
Fabric is a distributed system and therefore the expectation is that Peers are run as independent components not on the same machine in the same docker network for example (this will not be a valid deployment scenario, only a development scenario). This is why each peer needs to build and run it's instance of a chaincode container, you can't have one peer build the chaincode as the other peers being in their own environment will have no access to it
Hyperledger Composer will send instantiate requests to all peers on the channel so all those peers at instantiate time will build a version of the chaincode so it can run the instantiate transaction simulation.
ccenv is the container image that has the required components in order to build chaincode, it is not used to run chaincode.