# 鍚姩鏀寔Docker_VM鐨勯摼 ## 閫氳繃绠$悊鍙板惎鍔ㄥ惎鐢―ocker铏氭嫙鏈虹殑閾� <a id='3.1.1'></a> ### 鐧诲綍 <img loading="lazy" src="../images/ManagementLogin.png" style="zoom:50%;" /> - 绉佹湁鍖栭儴缃叉湰骞冲彴鏃朵細鐢熸垚鐨勫搴旂殑admin璐﹀彿锛岄粯璁ゅ瘑鐮佷负a123456 <a id='3.1.2'></a> #### 鏂板缁勭粐璇佷功 <img loading="lazy" src="../images/ManagementAddOrgCert.png" style="zoom:50%;" /> - 濉啓缁勭粐ID鍜岀粍缁囧悕绉� - 缁勭粐鍜屽拰缁勭粐鍚嶇О涓嶈兘閲嶅 - 鏀寔鐢宠鍥藉瘑鍜岄潪鍥藉瘑涓ょ璇佷功銆� #### 鏂板鑺傜偣璇佷功 <img loading="lazy" src="../images/ManagementAddNodeCert.png" style="zoom:50%;" /> - 鐩墠鑺傜偣璇佷功瑙掕壊鍒嗕负鍏辫瘑鑺傜偣鍜屽悓姝ヨ妭鐐逛袱绉嶃€� - 閫氳繃濉啓鑺傜偣鍚嶇О銆佺粍缁囦俊鎭紝鑺傜偣瑙掕壊锛岀敵璇疯妭鐐硅瘉涔︺€� - 鏀寔鐢宠鍥藉瘑鍜岄潪鍥藉瘑涓ょ璇佷功銆� #### 鏂板鐢ㄦ埛璇佷功 <img loading="lazy" src="../images/ManagementAddUserCert.png" style="zoom:50%;" /> - 鐩墠鐢ㄦ埛璇佷功瑙掕壊鍒嗕负admin銆乧lient鍜宭ight涓夌銆� - 閫氳繃濉啓鐢ㄦ埛鍚嶇О銆佺粍缁囦俊鎭紝鐢ㄦ埛瑙掕壊鐢宠鐢ㄦ埛璇佷功銆� - 鏀寔鐢宠鍥藉瘑鍜岄潪鍥藉瘑涓ょ璇佷功銆� - 鍚堢害閮ㄧ讲闇€瑕佸搴旂殑绠$悊鍛樿瘉涔︼紝鎵€浠ラ渶瑕佺敵璇峰搴旂殑绠$悊鍛樼敤鎴� #### 鏂板缓鍖哄潡閾� <img loading="lazy" src="../images/ManagementAddChain2.png" style="zoom:50%;" /> <img loading="lazy" src="../images/ManagementAddChain3.png" style="zoom:50%;" /> - 閫夋嫨璇佷功妯″紡 - 閾鹃厤缃枃浠跺弬鏁拌瀹� - 姝ゅ鐢ㄤ簬鏂板閾鹃厤缃枃浠讹紝鐩墠鏀寔鑷畾涔夐摼鐨刬d銆佸悕绉般€佸尯鍧楁渶澶у閲忥紝鍑哄潡闂撮殧銆佷氦鏄撹繃鏈熸椂闀匡紝浠ュ強鍏辫瘑閰嶇疆銆� - 鐩墠鏀寔閰嶇疆TBFT銆丷AFT銆丼OLO銆丮AXBFT鍏辫瘑銆� - 鐢宠閾鹃厤缃枃浠跺墠锛岃鍏堢‘淇濓紝鎵€闇€鐨勭粍缁囧拰鑺傜偣璇佷功宸茬粡鐢宠/瀵煎叆鏈鐞嗗钩鍙般€� - 姝ゅ闇€瑕佸嬀閫塂ocker_VM - 鏀寔鍗曟満閮ㄧ讲鍜屽鏈洪儴缃诧紝璇锋纭~鍐欐墍瑕佷箣鍚庤閮ㄧ讲鍖哄潡閾捐妭鐐圭殑鏈哄櫒鎵€鍦ㄧ殑ip锛屽苟纭繚绔彛涓嶅啿绐併€� #### 涓嬭浇閮ㄧ讲閾� <img loading="lazy" src="../images/ManagementDownloadChain2.png" style="zoom:50%;" /> - 濡傚浘鎵€绀洪渶瑕佸厛涓嬭浇瀹夎Docker_VM鐨勭幆澧冧緷璧栵紝鐒跺悗鍐嶉儴缃插尯鍧楅摼銆� - 閮ㄧ讲鍖哄潡閾� - 涓嬭浇閾鹃厤缃互zip鍖呬负鍑嗭紝zip鍖呭寘鍚搴旂殑閾鹃厤缃枃浠跺拰閮ㄧ讲鑴氭湰 - 灏嗕笅杞界殑鍖呯Щ鍔ㄧ殑闇€瑕侀儴缃茬殑鏈哄櫒涓婂幓锛堝彲浠ヤ娇鐢╯cp杩涜绉诲姩锛� - 鎵ц`unzip`瑙e帇鎴恅release`鍖咃紝杩涘叆`release`鍖呮墽琛宍start.sh`杩涜鍚姩 #### 蹇€熻闃呴摼 <img loading="lazy" src="../images/ManagementSubscribe.png" style="zoom:50%;" /> - 閾鹃儴缃叉垚鍔熶箣鍚庡湪绠$悊鍙拌繘琛屽揩閫熻闃� #### 閮ㄧ讲/璋冪敤鍚堢害楠岃瘉閾炬槸鍚︽甯� 璁㈤槄鎴愬姛鍚庯紝鍙繘琛岄儴缃�/璋冪敤绀轰緥鍚堢害锛屼互妫€鏌ラ摼鍔熻兘鏄惁姝e父銆傞儴缃插悎绾︾殑浣跨敤鏁欑▼鍙瑙侊細[閮ㄧ讲绀轰緥鍚堢害](./閮ㄧ讲绀轰緥鍚堢害.md)銆� ## 閫氳繃鍛戒护琛屽惎鍔ㄥ惎鐢―ocker铏氭嫙鏈虹殑閾� ### 鐜渚濊禆 **鎿嶄綔绯荤粺** DockerVM渚濊禆浜巆group v1锛岀洰鍓嶄粎鏀寔鍦↙inux绯荤粺涓嬮儴缃插拰杩愯DockerVM銆� 娉細妫€鏌ョ郴缁焎group鐗堟湰鐨勬柟娉曞涓嬶紝v2鐨勮緭鍑轰负`cgroup2fs`锛寁1鐨勮緭鍑轰负`tmpfs`(`ubuntu22.04`鐗堟湰寮€濮嬮粯璁や负v2)銆� ```shell stat -fc %T /sys/fs/cgroup/ ``` **杞欢渚濊禆** docker锛�7zip 渚濊禆杞欢涓嬭浇锛� - docker锛氳鍙傜湅[https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/) - 7zip锛氳鍙傜湅[7zip瀹樼綉](https://sparanoid.com/lab/7z/) 鎷夊彇瀹樻柟Docker铏氭嫙鏈洪暅鍍忥細 ```shell # docker go image docker pull chainmakerofficial/chainmaker-vm-engine:v2.4.0 # docker java image docker pull chainmakerofficial/chainmaker-vm-engine-java:v2.4.0 ``` ### 鐢熸垚璇佷功骞跺垵濮嬪寲閰嶇疆 **鍚敤DockerVM** 鍦╟hainmaker涓惎鐢―ocker VM鏈変袱绉嶆柟寮忋€� **鏂瑰紡涓€:** [閫氳繃鍛戒护琛屽伐鍏峰惎鍔ㄩ摼](../recovery/閫氳繃鍛戒护琛屽伐鍏峰惎鍔ㄩ摼.md)锛屽湪鎵ц`prepare.sh`銆乣prepare_pk.sh`銆乣prepare_pwk.sh`鏃讹紝`enable docker go vm` 閫夋嫨 YES锛屾垨鑰卄enable docker java vm` 閫夋嫨 YES銆傚彲浠ュ悓鏃跺惎鐢╠ocker go 鍜宒ocker java銆� ```shell enable docker go vm (YES|NO(default)) ``` ```shell enable docker java vm (YES|NO(default)) ``` - 杩涘叆chainmaker-go/scripts鐩綍锛屾墽琛宲repare.sh鑴氭湰鐢熸垚鍗曢摼4鑺傜偣闆嗙兢閰嶇疆锛屽瓨浜庤矾寰刢hainmaker-go/build涓� - prepare_pk.sh鑴氭湰鏀寔鐢熸垚4/7/10/13/16鑺傜偣鍏閽ュ拰閰嶇疆 ```shell # 杩涘叆鑴氭湰鐩綍 $ cd ../scripts # 鏌ョ湅鑴氭湰甯姪 $ ./prepare.sh -h Usage: prepare.sh node_cnt(1/4/7/10/13/16) chain_cnt(1-4) p2p_port(default:11301) rpc_port(default:12301) docker_vm_runtime_port(default:32351) docker_go_engine_port(default:22351) docker_java_engine_port(default:23351) -c consense-type: 1-TBFT,3-MAXBFT,4-RAFT -l log-level: DEBUG,INFO,WARN,ERROR -v docker-vm-enable: true,false --vlog vm go log level: DEBUG,INFO,WARN,ERROR -j docker-java-enable: true,false --jlog vm go log level: DEBUG,INFO,WARN,ERROR -h show help eg1: prepare.sh 4 1 eg2: prepare.sh 4 1 11301 12301 eg2: prepare.sh 4 1 11301 12301 32351 22351 23351 eg2: prepare.sh 4 1 11301 12301 32351 22351 23351 -c 1 -l INFO -v true -j true --vlog=INFO --jlog=INFO eg2: prepare.sh 4 1 11301 12301 32351 22351 23351 -c 1 -l INFO -v false -j false --vlog=INFO --jlog=INFO # 鐢熸垚鍗曢摼4鑺傜偣闆嗙兢鐨勮瘉涔﹀拰閰嶇疆 ./prepare.sh 4 1 begin check params... param P2P_PORT 11301 param RPC_PORT 12301 param DOCKER_VM_RUNTIME_PORT 32351 param DOCKER_GO_ENGINE_PORT 22351 param DOCKER_JAVA_ENGINE_PORT 23351 input consensus type (1-TBFT(default),3-MAXBFT,4-RAFT,6-ABFT): param CONSENSUS_TYPE 1 input log level (DEBUG|INFO(default)|WARN|ERROR): param LOG_LEVEL INFO enable vm go (YES|NO(default))YES input vm go log level (DEBUG|INFO(default)|WARN|ERROR): param DOCKER_GO_LOG_LEVEL INFO param ENABLE_VM_GO true enable vm java (YES|NO(default))YES input vm java log level (DEBUG|INFO(default)|WARN|ERROR): param DOCKER_JAVA_LOG_LEVEL INFO param ENABLE_VM_JAVA true config node total 4 begin generate node1 config... begin node1 chain1 cert config... begin node1 trust config... begin generate node2 config... begin node2 chain1 cert config... begin node2 trust config... begin generate node3 config... begin node3 chain1 cert config... begin node3 trust config... begin generate node4 config... begin node4 chain1 cert config... begin node4 trust config... # 鏌ョ湅鐢熸垚濂界殑鑺傜偣璇佷功鍜岄厤缃� $ tree -L 3 ../build/ ../build/ 鈹溾攢鈹€ backup 鈹偮犅� 鈹溾攢鈹€ backup_certs 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ crypto-config_20220816164215 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ crypto-config_20220816193731 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ crypto-config_20220816193745 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ crypto-config_20220817195010 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ crypto-config_20220819164151 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ crypto-config_20220822204421 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ crypto-config_20220823193308 鈹偮犅� 鈹偮犅� 鈹斺攢鈹€ crypto-config_20220823193419 鈹偮犅� 鈹溾攢鈹€ backup_config 鈹偮犅� 鈹偮犅� 鈹斺攢鈹€ config_20220823193425 鈹偮犅� 鈹斺攢鈹€ backup_release 鈹偮犅� 鈹溾攢鈹€ release_20220808210208 鈹偮犅� 鈹溾攢鈹€ release_20220809203122 鈹偮犅� 鈹溾攢鈹€ release_20220816193816 鈹偮犅� 鈹溾攢鈹€ release_20220817195117 鈹偮犅� 鈹斺攢鈹€ release_20220819164434 鈹溾攢鈹€ config 鈹偮犅� 鈹溾攢鈹€ node1 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ certs 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ chainconfig 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ chainmaker.yml 鈹偮犅� 鈹偮犅� 鈹斺攢鈹€ log.yml 鈹偮犅� 鈹溾攢鈹€ node2 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ certs 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ chainconfig 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ chainmaker.yml 鈹偮犅� 鈹偮犅� 鈹斺攢鈹€ log.yml 鈹偮犅� 鈹溾攢鈹€ node3 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ certs 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ chainconfig 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ chainmaker.yml 鈹偮犅� 鈹偮犅� 鈹斺攢鈹€ log.yml 鈹偮犅� 鈹斺攢鈹€ node4 鈹偮犅� 鈹溾攢鈹€ certs 鈹偮犅� 鈹溾攢鈹€ chainconfig 鈹偮犅� 鈹溾攢鈹€ chainmaker.yml 鈹偮犅� 鈹斺攢鈹€ log.yml 鈹溾攢鈹€ crypto-config 鈹偮犅� 鈹溾攢鈹€ wx-org1.chainmaker.org 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ ca 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ node 鈹偮犅� 鈹偮犅� 鈹斺攢鈹€ user 鈹偮犅� 鈹溾攢鈹€ wx-org2.chainmaker.org 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ ca 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ node 鈹偮犅� 鈹偮犅� 鈹斺攢鈹€ user 鈹偮犅� 鈹溾攢鈹€ wx-org3.chainmaker.org 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ ca 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ node 鈹偮犅� 鈹偮犅� 鈹斺攢鈹€ user 鈹偮犅� 鈹斺攢鈹€ wx-org4.chainmaker.org 鈹偮犅� 鈹溾攢鈹€ ca 鈹偮犅� 鈹溾攢鈹€ node 鈹偮犅� 鈹斺攢鈹€ user 鈹溾攢鈹€ crypto_config.yml 鈹溾攢鈹€ pkcs11_keys.yml 鈹斺攢鈹€ release 鈹溾攢鈹€ chainmaker-v2.4.0-wx-org1.chainmaker.org 鈹偮犅� 鈹溾攢鈹€ bin 鈹偮犅� 鈹溾攢鈹€ config 鈹偮犅� 鈹溾攢鈹€ data 鈹偮犅� 鈹溾攢鈹€ lib 鈹偮犅� 鈹斺攢鈹€ log 鈹溾攢鈹€ chainmaker-v2.4.0-wx-org1.chainmaker.org-20220819164205-x86_64.tar.gz 鈹溾攢鈹€ chainmaker-v2.4.0-wx-org2.chainmaker.org 鈹偮犅� 鈹溾攢鈹€ bin 鈹偮犅� 鈹溾攢鈹€ config 鈹偮犅� 鈹溾攢鈹€ lib 鈹偮犅� 鈹斺攢鈹€ log 鈹溾攢鈹€ chainmaker-v2.4.0-wx-org2.chainmaker.org-20220819164205-x86_64.tar.gz 鈹溾攢鈹€ chainmaker-v2.4.0-wx-org3.chainmaker.org 鈹偮犅� 鈹溾攢鈹€ bin 鈹偮犅� 鈹溾攢鈹€ config 鈹偮犅� 鈹溾攢鈹€ lib 鈹偮犅� 鈹斺攢鈹€ log 鈹溾攢鈹€ chainmaker-v2.4.0-wx-org3.chainmaker.org-20220819164205-x86_64.tar.gz 鈹溾攢鈹€ chainmaker-v2.4.0-wx-org4.chainmaker.org 鈹偮犅� 鈹溾攢鈹€ bin 鈹偮犅� 鈹溾攢鈹€ config 鈹偮犅� 鈹溾攢鈹€ lib 鈹偮犅� 鈹斺攢鈹€ log 鈹溾攢鈹€ chainmaker-v2.4.0-wx-org4.chainmaker.org-20220819164205-x86_64.tar.gz 鈹斺攢鈹€ crypto-config-20220819164205.tar.gz ``` **鏂瑰紡浜�** 淇敼鑺傜偣閰嶇疆鐩綍涓嬬殑`chainmaker.yml`鏂囦欢锛屾牴鎹渶瑕侀厤缃笉鍚岀殑铏氭嫙鏈烘槸鍚﹀惎鐢紙`enable`璁剧疆涓篳true`鎴朻false`锛�: ```yaml vm: go: # 鏄惁鍚敤鏂扮増Golang瀹瑰櫒 enable: true java: # 鏄惁鍚敤鏂扮増Java瀹瑰櫒 enable: true ``` ### DockerVM閰嶇疆 **閰嶇疆淇℃伅璇存槑** chainmaker.yml 鏂囦欢鐩稿叧閰嶇疆濡備笅锛� ```yaml vm: common: # 涓庤櫄鎷熸満寮曟搸grpc閫氫俊鐨勬渶澶ф秷鎭彂閫佸ぇ灏�, 榛樿100MB max_send_msg_size: 100 # 涓庤櫄鎷熸満寮曟搸grpc閫氫俊鐨勬渶澶ф秷鎭帴鏀跺ぇ灏�, 榛樿100MB max_recv_msg_size: 100 # 涓庤櫄鎷熸満寮曟搸grpc閫氫俊鐨勬渶澶ц繛鎺ヨ秴鏃舵椂闂�, 榛樿10s dial_timeout: 10 # 杩愯鏃舵湇鍔″櫒閰嶇疆 (涓庡悎绾﹀疄渚嬭繘绋嬩氦浜掞紝杩涜淇℃伅浜ゆ崲) runtime_server: # 绔彛鍙凤紝榛樿涓� 32351 port: 32351 go: # 鏄惁鍚敤鏂扮増Golang瀹瑰櫒 enable: true # 鏁版嵁鎸傝浇璺緞, 鍖呮嫭鍚堢害銆乻ock鏂囦欢锛坲ds锛� data_mount_path: ../data/wx-org1.chainmaker.org/go # 鏃ュ織鎸傝浇璺緞 log_mount_path: ../log/wx-org1.chainmaker.org/go # 濡傛灉闇€瑕佽嚜瀹氫箟楂樼骇閰嶇疆锛岃灏唙m.yml鏂囦欢鏀惧叆dockervm_config_path涓紝浼樺厛绾э細chainmaker.yml > vm.yml > 榛樿閰嶇疆 # dockervm_config_path: /config_path/vm.yml # 鏄惁鍦ㄦ帶鍒跺彴鎵撳嵃鏃ュ織 log_in_console: false # docker鍚堢害寮曟搸鐨勬棩蹇楃骇鍒� log_level: DEBUG # 鍚堢害寮曟搸鏈€澶氬惎鐢ㄧ殑鍘熷鍚堢害杩涚▼鏁帮紝榛樿涓�20锛堣法鍚堢害璋冪敤浼氶澶栨媺璧锋柊鐨勮繘绋嬶級 max_concurrency: 20 # 鍚堢害寮曟搸鏈嶅姟鍣ㄩ厤缃� (涓巆hainmaker浜や簰锛岃繘琛屼氦鏄撹姹傘€佸悎绾﹁姹傜瓑浜や簰) contract_engine: # 鍚堢害寮曟搸鏈嶅姟鍣╥p, 榛樿涓� 127.0.0.1 host: 127.0.0.1 # 绔彛鍙凤紝榛樿涓� 22351 port: 22351 # 涓庡悎绾﹀紩鎿庢湇鍔″櫒鐨勬渶澶ц繛鎺ユ暟 max_connection: 5 java: # 鏄惁鍚敤Java瀹瑰櫒 enable: true # 鏁版嵁鎸傝浇璺緞, 鍖呮嫭鍚堢害銆乻ock鏂囦欢锛坲ds锛� data_mount_path: ../data/wx-org1.chainmaker.org/java # 鏃ュ織鎸傝浇璺緞 log_mount_path: ../log/wx-org1.chainmaker.org/java # 濡傛灉闇€瑕佽嚜瀹氫箟楂樼骇閰嶇疆锛岃灏唙m.yml鏂囦欢鏀惧叆dockervm_config_path涓紝浼樺厛绾э細chainmaker.yml > vm.yml > 榛樿閰嶇疆 # dockervm_config_path: /config_path/vm.yml # 鏄惁鍦ㄦ帶鍒跺彴鎵撳嵃鏃ュ織 log_in_console: false # docker鍚堢害寮曟搸鐨勬棩蹇楃骇鍒� log_level: DEBUG # 鍚堢害寮曟搸鏈€澶氬惎鐢ㄧ殑鍘熷鍚堢害杩涚▼鏁帮紝榛樿涓�20锛堣法鍚堢害璋冪敤浼氶澶栨媺璧锋柊鐨勮繘绋嬶級 max_concurrency: 20 # 鍚堢害寮曟搸鏈嶅姟鍣ㄩ厤缃� (涓巆hainmaker浜や簰锛岃繘琛屼氦鏄撹姹傘€佸悎绾﹁姹傜瓑浜や簰) contract_engine: # 鍚堢害寮曟搸鏈嶅姟鍣╥p, 榛樿涓� 127.0.0.1 host: 127.0.0.1 # 绔彛鍙凤紝榛樿涓� 23351 port: 23351 # 涓庡悎绾﹀紩鎿庢湇鍔″櫒鐨勬渶澶ц繛鎺ユ暟 max_connection: 5 ``` **楂樼骇閰嶇疆** 濡傛灉甯屾湜浣跨敤鍚堢害寮曟搸楂樼骇閰嶇疆锛岄渶瑕侀厤缃甡vm:go`涓媊dockervm_config_path`涓厤缃枃浠讹紝閰嶇疆鏂囦欢妯℃澘濡備笅锛� ```yaml ########### RPC ########### rpc: chain_rpc_protocol: 1 # chain rpc protocol, 0 for unix domain socket, 1 for tcp(default) chain_host: 127.0.0.1 # chain tcp host chain_rpc_port: 22351 # chain rpc port, valid when protocol is tcp sandbox_rpc_port: 32351 # sandbox rpc port, valid when protocol is tcp max_send_msg_size: 100 # max send msg size(MiB) max_recv_msg_size: 100 # max recv msg size(MiB) server_min_interval: 60s # server min interval connection_timeout: 5s # connection timeout time server_keep_alive_time: 60s # idle duration before server ping server_keep_alive_timeout: 20s # ping timeout ########### Process ########### process: # max original process num, # max_call_contract_process_num = max_original_process_num * max_contract_depth (defined in protocol) # max_total_process_num = max_call_contract_process_num + max_original_process_num max_original_process_num: 20 exec_tx_timeout: 8s # process timeout while busy waiting_tx_time: 200ms # process timeout while tx completed (busy -> idle) release_rate: 30 # percentage of idle processes released periodically in total processes (0-100) release_period: 10m # period of idle processes released periodically in total processes ########### Log ########### log: contract_engine: level: "info" console: true sandbox: level: "info" console: true ########### Pprof ########### pprof: contract_engine: enable: false port: 21215 sandbox: enable: false port: 21522 ########### Contract ########### contract: max_file_size: 20480 # contract size(MiB) ``` **鈿狅笍娉ㄦ剰锛�** 鍦ㄥ鍣ㄥ惎鍔ㄨ剼鏈腑锛宍max_concurrency`锛堟渶澶у惎鐢ㄧ殑杩涚▼鏁伴噺锛夐粯璁や负`20`锛堣法鍚堢害璋冪敤浼氶澶栨媺璧锋柊鐨勮繘绋嬶級銆� 濡傛灉鏄湪鐢熶骇鐜涓嬶紝寤鸿鏍规嵁cpu鏍告暟閰嶇疆杩欎笁涓弬鏁般€� | | 8C CPU | 16C CPU | 32C CPU | | --------------- | ------ | ------- | ------- | | max_concurrency | 20 | 100 | 1500 | 濡傛灉鏈夎緝澶氳法鍚堢害璋冪敤浜ゆ槗锛岃鏍规嵁璺ㄥ悎绾﹁皟鐢ㄧ殑娣卞害鎸夋瘮渚嬪噺灏慲max_concurrency`鐨勫€硷紝渚嬪32鏍哥郴缁熶笅锛屽鏋滄湁杈冨涓ゅ眰璺ㄥ悎绾﹁皟鐢紝鍒檂max_concurrency`鍊煎缓璁涓篳750锛�1500/2锛塦銆� 濡傛灉浣跨敤鑴氭湰鍚姩锛岃鎸夐渶淇敼鑴氭湰閲岀殑鍙傛暟閰嶇疆銆� ### 缂栬瘧鍜屽畨瑁呭寘鍒朵綔 - 鐢熸垚璇佷功锛坧repare.sh鑴氭湰锛夊悗鎵цbuild_release.sh鑴氭湰锛屽皢缂栬瘧chainmaker-go妯″潡锛屽苟鎵撳寘鐢熸垚瀹夎锛屽瓨浜庤矾寰刢hainmaker-go/build/release涓� ```shell $ ./build_release.sh $ tree ../build/release/ ../build/release/ 鈹溾攢鈹€ chainmaker-v2.4.0-wx-org1.chainmaker.org-20220823193812-x86_64.tar.gz 鈹溾攢鈹€ chainmaker-v2.4.0-wx-org2.chainmaker.org-20220823193812-x86_64.tar.gz 鈹溾攢鈹€ chainmaker-v2.4.0-wx-org3.chainmaker.org-20220823193812-x86_64.tar.gz 鈹溾攢鈹€ chainmaker-v2.4.0-wx-org4.chainmaker.org-20220823193812-x86_64.tar.gz 鈹斺攢鈹€ crypto-config-20220823193812.tar.gz ``` ### 鍚屾椂鍚姩閾惧拰DockerVM **鍚姩** - 鎵цcluster_quick_start.sh鑴氭湰锛屼細瑙e帇鍚勪釜瀹夎鍖咃紝璋冪敤bin鐩綍涓殑start.sh鑴氭湰锛屽惎鍔╟hainmaker鑺傜偣锛屽苟鎷夎捣鑺傜偣闇€瑕佺殑DockerVM瀹瑰櫒 ```shell $ ./cluster_quick_start.sh normal ``` **鏌ョ湅鑺傜偣鏄惁瀛樺湪** - 鏌ョ湅杩涚▼ ```shell root 998263 1 1 17:38 pts/0 00:00:00 ./chainmaker start -c ../config/wx-org1.chainmaker.org/chainmaker.yml name-20230828172931 root 1000785 1 1 17:38 pts/0 00:00:00 ./chainmaker start -c ../config/wx-org2.chainmaker.org/chainmaker.yml name-20230828172931 root 1003164 1 1 17:38 pts/0 00:00:00 ./chainmaker start -c ../config/wx-org3.chainmaker.org/chainmaker.yml name-20230828172932 root 1005601 1 1 17:38 pts/0 00:00:00 ./chainmaker start -c ../config/wx-org4.chainmaker.org/chainmaker.yml name-20230828172932 ``` - 鏌ョ湅绔彛 ```shell $ netstat -lptn | grep 1230 tcp6 0 0 :::12301 :::* LISTEN 2058348/./chainmake tcp6 0 0 :::12302 :::* LISTEN 2059604/./chainmake tcp6 0 0 :::12303 :::* LISTEN 2060801/./chainmake tcp6 0 0 :::12304 :::* LISTEN 2062057/./chainmake ``` - 鏌ョ湅DockerVM瀹瑰櫒 ```shell $ docker ps | grep "chainmakerofficial/chainmaker-vm-engine:v2.4.0" CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e54dfe966bfb chainmakerofficial/chainmaker-vm-engine-java:v2.4.0 "/bin/startvm java" 14 seconds ago Up 14 seconds VM-JAVA-wx-org4.chainmaker.org-name-20230828172932 cc600c451936 chainmakerofficial/chainmaker-vm-engine:v2.4.0 "/bin/startvm go" 17 seconds ago Up 17 seconds VM-GO-wx-org4.chainmaker.org-name-20230828172932 09875f597d28 chainmakerofficial/chainmaker-vm-engine-java:v2.4.0 "/bin/startvm java" 21 seconds ago Up 20 seconds VM-JAVA-wx-org3.chainmaker.org-name-20230828172932 eaf720547cdd chainmakerofficial/chainmaker-vm-engine:v2.4.0 "/bin/startvm go" 24 seconds ago Up 23 seconds VM-GO-wx-org3.chainmaker.org-name-20230828172932 a2d164c0cac2 chainmakerofficial/chainmaker-vm-engine-java:v2.4.0 "/bin/startvm java" 27 seconds ago Up 27 seconds VM-JAVA-wx-org2.chainmaker.org-name-20230828172931 3739454d774e chainmakerofficial/chainmaker-vm-engine:v2.4.0 "/bin/startvm go" 30 seconds ago Up 30 seconds VM-GO-wx-org2.chainmaker.org-name-20230828172931 a06e195a17d6 chainmakerofficial/chainmaker-vm-engine-java:v2.4.0 "/bin/startvm java" 34 seconds ago Up 33 seconds VM-JAVA-wx-org1.chainmaker.org-name-20230828172931 bc5a9e5b40bd chainmakerofficial/chainmaker-vm-engine:v2.4.0 "/bin/startvm go" 37 seconds ago Up 36 seconds VM-GO-wx-org1.chainmaker.org-name-20230828172931 ``` - 鏌ョ湅鏃ュ織 ```shell $ cat ../build/release/*/bin/panic.log $ cat ../build/release/*/log/system.log $ cat ../build/release/*/log/system.log |grep "ERROR\|put block\|all necessary" ``` ### 鐙珛閮ㄧ讲DockerVM铏氭嫙鏈� **棣栧厛鍘籤./build/release`璺緞涓嬭В鍘嬪悇涓妭鐐硅瘉涔﹀強閰嶇疆鐨刯ar鍖�:** ```shell tar -zxvf chainmaker-v2.4.0-wx-org4.chainmaker.org-20220824115035-x86_64.tar.gz ``` **鍚姩鑺傜偣1闇€瑕佺殑DockerVM** - 浣跨敤*docker-vm-standalone-start.sh*鑴氭湰鍚姩Docker Go VM ```shell $ ./docker-vm-standalone-start.sh input path to cache contract files(must be absolute path, default:'./docker-go'): /home/data/wx-org1.chainmaker.org/go contracts path does not exist, create it or not(y|n): y input log path(must be absolute path, default:'./log'): /home/log/wx-org1.chainmaker.org/go log path does not exist, create it or not(y|n): y input log level(DEBUG|INFO(default)|WARN|ERROR): DEBUG input expose port(default 22351): 22351 input runtime port(default 32351): 32351 input container name(default 'chainmaker-docker-vm'): VM-GO-wx-org1.chainmaker.org # 涓嶄娇鐢ㄩ厤缃枃浠跺惎鍔―ockerVM锛屽拷鐣ヨ椤� input vm config file path(use default config(default)): docker-vm config is nil, use default config start docker vm container ``` - 浣跨敤*docker-vm-standalone-start.sh*鑴氭湰鍚姩Docker Java VM ```shell $ ./docker-vm-standalone-start.sh java input path to cache contract files(must be absolute path, default:'./docker-go'): /home/data/wx-org1.chainmaker.org/java contracts path does not exist, create it or not(y|n): y input log path(must be absolute path, default:'./log'): /home/log/wx-org1.chainmaker.org/java log path does not exist, create it or not(y|n): y input log level(DEBUG|INFO(default)|WARN|ERROR): DEBUG input expose port(default 22351): 22351 input runtime port(default 32351): 32351 input container name(default 'chainmaker-docker-vm'): VM-JAVA-wx-org1.chainmaker.org # 涓嶄娇鐢ㄩ厤缃枃浠跺惎鍔―ockerVM锛屽拷鐣ヨ椤� input vm config file path(use default config(default)): docker-vm config is nil, use default config start docker vm container ``` - 浣跨敤Docker鍛戒护鍚姩 鍚姩Docker Go 铏氭嫙鏈� ```shell $ docker run -itd \ --net=host \ -v "/home/data/wx-org1.chainmaker.org/go":/mount \ -v "/home/log/wx-org1.chainmaker.org/go":/log \ -e CHAIN_RPC_PROTOCOL="1" \ -e CHAIN_RPC_PORT="22351" \ -e SANDBOX_RPC_PORT="32351" \ -e MAX_SEND_MSG_SIZE="100" \ -e MAX_RECV_MSG_SIZE="100" \ -e MAX_CONN_TIMEOUT="10" \ -e MAX_ORIGINAL_PROCESS_NUM="20" \ -e DOCKERVM_CONTRACT_ENGINE_LOG_LEVEL="DEBUG" \ -e DOCKERVM_SANDBOX_LOG_LEVEL="DEBUG" \ -e DOCKERVM_LOG_IN_CONSOLE="false" \ --name VM-GO-wx-org1.chainmaker.org \ --privileged chainmakerofficial/chainmaker-vm-engine:v3.0.1 \ > /dev/null ``` 鍚姩Docker Java 铏氭嫙鏈� ```shell $ docker run -itd \ --net=host \ -v "/home/data/wx-org1.chainmaker.org/go":/mount \ -v "/home/log/wx-org1.chainmaker.org/go":/log \ -e CHAIN_RPC_PROTOCOL="1" \ -e CHAIN_RPC_PORT="22351" \ -e SANDBOX_RPC_PORT="32351" \ -e MAX_SEND_MSG_SIZE="100" \ -e MAX_RECV_MSG_SIZE="100" \ -e MAX_CONN_TIMEOUT="10" \ -e MAX_ORIGINAL_PROCESS_NUM="20" \ -e DOCKERVM_CONTRACT_ENGINE_LOG_LEVEL="DEBUG" \ -e DOCKERVM_SANDBOX_LOG_LEVEL="DEBUG" \ -e DOCKERVM_LOG_IN_CONSOLE="false" \ --name VM-JAVA-wx-org1.chainmaker.org \ --privileged chainmakerofficial/chainmaker-vm-engine-java:v2.4.0 \ > /dev/null ``` **鐒跺悗鍚姩鑺傜偣1** ```shell $ ./start.sh -f alone ``` **鏌ョ湅鑺傜偣鍜屽鍣ㄦ槸鍚﹀凡缁忓缓绔嬮摼鎺�** ```shell $ cat /home/log/wx-org1.chainmaker.org/go/go.log |grep "Chain RPC Service" ``` 鎸夌収涓婅堪姝ラ渚濇鍚姩鍓╀綑鑺傜偣銆� ### 浣跨敤楂樼骇閰嶇疆鐙珛閮ㄧ讲DockerVM **楂樼骇閰嶇疆** 濡傛灉甯屾湜浣跨敤鍚堢害寮曟搸楂樼骇閰嶇疆锛岄渶瑕侀厤缃甡vm:go`涓媊dockervm_config_path`楂樼骇閰嶇疆鏂囦欢璺緞锛岃繖閲屾垜浠妸鑺傜偣1鐨凞ockerVM楂樼骇閰嶇疆鏂囦欢*vm.yml*鏀剧疆鍦╜/home/config_path/wx-org1.chainmaker.org`锛屽湪*chainmaker.yml*涓搴旂殑閰嶇疆濡備笅锛� ```yaml # Contract Virtual Machine(VM) configs vm: # Golang runtime in docker container go: ... # If use a customized VM configuration file, supplement it; else, do not configure # Priority: chainmaker.yml > vm.yml > default settings dockervm_config_path: /home/config_path/wx-org1.chainmaker.org/vm.yml ... ``` 閰嶇疆鏂囦欢妯℃澘濡備笅锛� ```yaml ########### RPC ########### rpc: chain_rpc_protocol: 1 # chain rpc protocol, 0 for unix domain socket, 1 for tcp(default) chain_host: 127.0.0.1 # chain tcp host chain_rpc_port: 22351 # chain rpc port, valid when protocol is tcp sandbox_rpc_port: 32351 # sandbox rpc port, valid when protocol is tcp max_send_msg_size: 100 # max send msg size(MiB) max_recv_msg_size: 100 # max recv msg size(MiB) server_min_interval: 60s # server min interval connection_timeout: 5s # connection timeout time server_keep_alive_time: 60s # idle duration before server ping server_keep_alive_timeout: 20s # ping timeout ########### Process ########### process: # max original process num, # max_call_contract_process_num = max_original_process_num * max_contract_depth (defined in protocol) # max_total_process_num = max_call_contract_process_num + max_original_process_num max_original_process_num: 20 exec_tx_timeout: 8s # process timeout while busy waiting_tx_time: 200ms # process timeout while tx completed (busy -> idle) release_rate: 30 # percentage of idle processes released periodically in total processes (0-100) release_period: 10m # period of idle processes released periodically in total processes ########### Log ########### log: contract_engine: level: "info" console: true sandbox: level: "info" console: true ########### Pprof ########### pprof: contract_engine: enable: false port: 21215 sandbox: enable: false port: 21522 ########### Contract ########### contract: max_file_size: 20480 # contract size(MiB) ``` **浣跨敤楂樼骇閰嶇疆鍚姩鑺傜偣闇€瑕佺殑DockerVM** - 浣跨敤*docker-vm-standalone-start.sh*鑴氭湰鍚姩DockerVM ```shell $ ./docker-vm-standalone-start.sh input path to cache contract files(must be absolute path, default:'./docker-go'): /home/data/wx-org1.chainmaker.org/go contracts path does not exist, create it or not(y|n): y input log path(must be absolute path, default:'./log'): /home/log/wx-org1.chainmaker.org/go log path does not exist, create it or not(y|n): y ## 浣跨敤閰嶇疆鏂囦欢锛屽拷鐣ヨ椤� input log level(DEBUG|INFO(default)|WARN|ERROR): ## 浣跨敤閰嶇疆鏂囦欢锛屽拷鐣ヨ椤� input expose port(default 22351): ## 浣跨敤閰嶇疆鏂囦欢锛屽拷鐣ヨ椤� input runtime port(default 32351): input container name(default 'chainmaker-docker-vm'): VM-GO-wx-org1.chainmaker.org input vm config file path(use default config(default)): /home/config_path/wx-org1.chainmaker.org/vm.yml start docker vm container ``` - 浣跨敤Docker鍛戒护鍚姩DockerVM ```shell $ docker run -itd \ --net=host \ -v "/home/data/wx-org1.chainmaker.org/go":/mount \ -v "/home/log/wx-org1.chainmaker.org/go":/log \ --name VM-GO-wx-org1.chainmaker.org \ --privileged chainmakerofficial/chainmaker-vm-engine:v2.4.0 \ > /dev/null ``` **鍚姩鑺傜偣** ```shell $ ./start.sh -f alone ``` **鏌ョ湅鑺傜偣鏄惁鍜孌ockerVM宸茬粡寤虹珛杩炴帴** ```shell $ cat /home/log/wx-org1.chainmaker.org/go/go.log |grep "Chain RPC Service" ``` 鎸夌収涓婅堪姝ラ渚濇鍚姩鍓╀綑鑺傜偣銆� ### 鏈湴閮ㄧ讲鐨勫仠姝� 濡傛灉鏄€氳繃`./cluster_quick_start.sh`鍚屾椂鍚姩鐨勮妭鐐瑰拰铏氭嫙鏈猴紝鍙互閫氳繃瀵瑰簲鐨剆top鑴氭湰鍚屾椂鍋滄閾惧拰DockerVM瀹瑰櫒锛� ```shell $ ./cluster_quick_stop.sh ``` 濡傛灉鍚屾椂闇€瑕佹竻闄ゆ墍鏈夐摼鏁版嵁鍙互浣跨敤锛� ```shell $ ./cluster_quick_stop.sh clean ``` 鐢变簬DockerVM鍐呬娇鐢ㄥ鍣ㄥ唴鐨剅oot鐢ㄦ埛鍚姩铏氭嫙鏈烘湇鍔★紝鍥犳鏃ュ織鍜岀紦瀛樻枃浠朵篃灞炰簬root鐢ㄦ埛锛坲id=0锛夈€傚鏋滀互闈瀝oot鐢ㄦ埛鍚姩鐨勭▼搴忥紝娓呴櫎鏁版嵁鏃跺彲鑳戒細鎶ラ敊鎻愮ず缂哄皯鏂囦欢璁块棶鐨勬潈闄愶紝闇€瑕佷互root鏉冮檺鍒犻櫎鏁版嵁锛屾垨鑰呬娇鐢╗userns-remap](https://docs.docker.com/engine/security/userns-remap/)鐨勫姛鑳藉皢瀹瑰櫒閲岀敤鎴锋槧灏勬垚鏅€氱敤鎴枫€� ### 鐙珛閮ㄧ讲鐨勫仠姝� **棣栧厛鍏抽棴閾捐妭鐐�** ```shell $ ./stop.sh alone ``` **鐒跺悗鍏抽棴璇ヨ妭鐐瑰搴旂殑铏氭嫙鏈�** ```shell $ docker stop VM-GO-wx-org1.chainmaker.org $ docker stop VM-JAVA-wx-org1.chainmaker.org ``` ## 浣跨敤docker閮ㄧ讲鏀寔docker-vm鐨勯摼 鈥滈暱瀹夐摼路ChainMaker鈥濇敮鎸丏ocker-go鍚堢害寮€鍙戯紝Docker-go鍚堢害杩愯鍦ㄧ嫭绔婦ocker VM瀹瑰櫒涓紝鏈枃灏嗕粙缁嶉暱瀹夐摼浣跨敤docker鏂瑰紡閮ㄧ讲鏃讹紝涓嶥ocker-vm閫氫俊鐨勫嚑绉嶉儴缃叉柟寮忋€� ### 浣跨敤docker鏂瑰紡閮ㄧ讲ChainMaker: ```sh cd chainmaker-go # 娓呯┖鏃х殑鏋勫缓鏁版嵁 rm -rf build make docker-build docker images ``` ### 鍑嗗閾鹃渶瑕佺殑閰嶇疆鏂囦欢 鍙傝€� [鍦ㄥ伐浣滅洰褰曚笅 浣跨敤鑴氭湰鎼缓](../recovery/閫氳繃鍛戒护琛屽伐鍏峰惎鍔ㄩ摼.html#runUseScripts)锛屼娇鐢ㄨ剼鏈敓鎴恉ocker闇€瑕佺殑鑺傜偣閰嶇疆鏂囦欢 ```sh cd chainmaker-go/scripts ./prepare_pk.sh 4 1 ./build_release.sh ./cluster_quick_start.sh ./cluster_quick_stop.sh ``` ### 澶嶅埗閰嶇疆鏂囦欢鍒癱hainmaker docker鑳借鍙栫殑浣嶇疆 docker鍚姩鏃讹紝榛樿鍔犺浇濡備笅璺緞鐨勯厤缃細chainmaker-go/scripts/docker/config/four-nodes ```sh cd chainmaker-go/scripts/docker/config/four-nodes cp -r ../../../../build/release/chainmaker-v2.2.1-wx-org1.chainmaker.org/config/wx-org1.chainmaker.org ./ cp -r ../../../../build/release/chainmaker-v2.2.1-wx-org2.chainmaker.org/config/wx-org2.chainmaker.org ./ cp -r ../../../../build/release/chainmaker-v2.2.1-wx-org3.chainmaker.org/config/wx-org3.chainmaker.org ./ cp -r ../../../../build/release/chainmaker-v2.2.1-wx-org4.chainmaker.org/config/wx-org4.chainmaker.org ./ ``` ### 淇敼鑺傜偣ip鍦板潃锛� - 鍦烘櫙涓€锛氫竴鍙癶ost鍚姩4涓猚hainmaker docker node 闇€瑕佸皢閰嶇疆鏂囦欢涓殑ip鎹㈡垚docker瀹瑰櫒鐨刬p - 鍒嗗埆鎵撳紑鍥涗釜鑺傜偣鐨刢hainmaker鏂囦欢: ```sh # 鏌ョ湅瀹瑰櫒ip ipv4_address: chainmaker-go/scripts/docker] vim four-nodes.docker-compose.yml # 淇敼chainmaker.yml鐨勯厤缃� chainmaker-go/scripts/docker/config/four-nodes/wx-org1.chainmaker.org] vim chainmaker.yml ``` - 鎵惧埌濡俢hainmaker.yml鐨勫涓嬩綅缃� ```yaml seeds: - "/ip4/127.0.0.1/tcp/11301/p2p/XXX" - "/ip4/127.0.0.1/tcp/11302/p2p/XXX" - "/ip4/127.0.0.1/tcp/11303/p2p/XXX" - "/ip4/127.0.0.1/tcp/11304/p2p/XXX" ``` - 涓ょ淇敼鏂瑰紡浠婚€夊叾涓€ 绗竴绉嶏細浣跨敤four-nodes.docker-compose.yml涓厤缃殑瀹瑰櫒ip ```yaml seeds: - "/ip4/172.48.1.11/tcp/11301/p2p/XXX" - "/ip4/172.48.1.12/tcp/11302/p2p/XXX" - "/ip4/172.48.1.13/tcp/11303/p2p/XXX" - "/ip4/172.48.1.14/tcp/11304/p2p/XXX" ``` 绗簩绉嶏細浣跨敤four-nodes.docker-compose.yml涓厤缃殑瀹瑰櫒鍚� ```yaml seeds: - "/dns/cm-node1/tcp/11301/p2p/XXX" - "/dns/cm-node2/tcp/11302/p2p/XXX" - "/dns/cm-node3/tcp/11303/p2p/XXX" - "/dns/cm-node4/tcp/11304/p2p/XXX" ``` - 鍦烘櫙浜岋細鍥涘彴host鍚姩4涓猚hainmaker docker node 鍙傝€冨涓婁慨鏀规柟寮忥紝ip淇敼涓哄洓鍙癶ost鐨刬p ### 淇敼docker-vm鐩稿叧閰嶇疆 鈥滈暱瀹夐摼路ChainMaker鈥漋2.2.1涔嬪悗锛屽湪鑺傜偣閰嶇疆鏂囦欢chainmaker.yml涓叧浜巇ocker鐨勪袱绉嶈繛鎺ユ柟寮忓搴旂殑閰嶇疆涓猴細 绗竴绉嶏細鏈湴鐨剆ocket鏂囦欢 ``` uds_open: true ``` 绗簩绉嶏細tcp , **褰揷hainmaker浣跨敤docker鏂瑰紡閮ㄧ讲鏃讹紝鎺ㄨ崘浣跨敤杩欑閰嶇疆** ``` uds_open: false ``` - 鍦烘櫙涓€锛歝hainmaker浠ャ€恉ocker銆戞柟寮忛儴缃诧紝docker-vm涓巆hainmaker-vm閮ㄧ讲鍦ㄣ€愪笉鍚岀殑銆慼ost : 鍋囪锛欰(192.168.0.9)鏈哄櫒涓婂惎鍔ㄤ簡chainmaker 鐨刣ocker瀹瑰櫒, B(192.168.0.78)鏈哄櫒涓婂惎鍔ㄤ簡瀵瑰簲鐨刣ocker-vm ```sh uds_open: false docker_vm_host: 192.168.0.78 docker_vm_port: 22351 ``` - 鍦烘櫙浜岋細chainmaker浠ャ€恉ocker銆戞柟寮忛儴缃诧紝docker-vm涓巆hainmaker-vm閮ㄧ讲鍦ㄣ€愬悓涓€鍙般€慼ost: 鍋囪锛欰鏈哄櫒涓婂惎鍔ㄤ簡chainmaker鐨刣ocker瀹瑰櫒锛屽悓鏃跺惎鍔ㄥ搴旂殑docker-vm 鐢变簬docker-vm鍜宑hainmaker鍦ㄥ悓涓€鍙癶ost涓嬶紝闇€瑕佷繚璇佷袱涓猟ocker鐜鍦ㄤ娇鐢ㄥ悓涓€涓綉妗ョ殑鎯呭喌涓媔p鍦ㄥ悓涓€缃戞锛屽嵆澶勫湪鍚屼竴灞€鍩熺綉鍐�,渚嬪浣跨敤濡備笅鍛戒护鍚姩docker-vm ```sh docker run -d -p22351:22359 --network docker_localnet --ip 172.48.1.21 --privileged chainmakerofficial/chainmaker-vm-docker-go:v2.2.1 ``` 閰嶇疆鏂囦欢淇敼鏃讹紝娉ㄦ剰绔彛鍙蜂负-p22351:22359涓殑鍚庤€咃紝 骞朵笖ip 涓轰笂闈㈡寚瀹氱殑ip ```sh uds_open: false docker_vm_host: 172.48.1.21 docker_vm_port: 22359 ``` - 鍦烘櫙涓夛細chainmaker浠ャ€愯繘绋嬫柟寮忋€戦儴缃诧紝docker-vm涓巆hainmaker閮ㄧ讲鍦ㄣ€愪笉鍚岀殑銆慼ost: ```shell uds_open: false docker_vm_host: 192.168.0.78 docker_vm_port: 22351 ``` - 鍦烘櫙鍥涳細chainmaker浠ヨ繘绋嬫柟寮忛儴缃诧紝 docker-vm涓巆hainmaker閮ㄧ讲鍦ㄣ€愬悓涓€鍙般€慼ost: ```sh uds_open: false docker_vm_host: 127.0.0.1 docker_vm_port: 22351 ``` ## 鍚堢害鐨勫畨瑁呬笌璋冪敤 鍚堢害鐨勫畨瑁呬笌璋冪敤璇峰弬鑰冿細[浣跨敤Golang杩涜鏅鸿兘鍚堢害寮€鍙慮(./浣跨敤Golang杩涜鏅鸿兘鍚堢害寮€鍙�.md) 鍚堢害鐨勫畨瑁呬笌璋冪敤璇峰弬鑰冿細[浣跨敤Java杩涜鏅鸿兘鍚堢害寮€鍙慮(./浣跨敤Java杩涜鏅鸿兘鍚堢害寮€鍙�.md)