
تمام دستورات کاربردی Docker برای کار با Hyperledger Fabric
این مقاله راهنمای جامع مدیریت شبکه Hyperledger Fabric با استفاده از دستورات Docker است؛ از مشاهده کانتینرها و لاگها تا بکاپگیری و ریست کامل شبکه.
Table of contents [Show]
نمایش لیست کانتینرها
فقط کانتینرهای فعال را نشان میدهد (peer، orderer، ca، cli و غیره). ستونها شامل NAMES، STATUS، PORTS هستند.
docker psاگر بخواهید همه ( حتی متوقفشدهها ) رو ببینید:
docker ps -aتوقف و حذف کانتینرها
توقف یک کانتینر
docker stop peer0.org1.example.comکانتینر peer0 متوقف میشود.
حذف کانتینر
docker rm peer0.org1.example.comپس از توقف، برای حذف کامل آن استفاده میشود.
مشاهده لاگهای سرویسها
مشاهده لحظهای لاگهای Peer
docker logs -f peer0.org1.example.com-f یعنی دنبال کردن لاگ بهصورت زنده (follow).
فیلتر با grep
docker logs peer0.org1.example.com 2>&1 | grep "Committed blockفقط خطوطی را نشان میدهد که شامل عبارت “Committed block” باشند.
ذخیره لاگها در فایل
docker logs peer0.org2.example.com > peer0_org2.logتمام خروجی در فایل peer0_org2.log ذخیره میشود.
ورود به داخل یک کانتینر (exec)
ورود به Peer
docker exec -it peer0.org1.example.com bashداخل محیط Bash کانتینر peer وارد میشوید، مثلاً میتوانید فرمان زیر را اجرا کنید:
peer channel listخروج از پییر
exitتوقف پییر
docker stop peer0.org1.example.comورود به CLI
docker exec -it cli bashمعمولاً از داخل CLI کانتینر، فرمانهای chaincode نصب، instantiate و invoke اجرا میشوند.
بررسی وضعیت و اطلاعات
مشاهده جزییات کانتینر
docker inspect peer0.org1.example.comاطلاعات کامل شامل IP داخلی، شبکه، volumeها و تنظیمات.
مشاهده آدرس IP
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' peer0.org1.example.comفقط IP داخلی کانتینر را نشان میدهد (برای ارتباطات بین containerها مفید است).
مدیریت ایمیجها
نمایش لیست ایمیجها
docker imagesحذف ایمیج خاص
docker rmi hyperledger/fabric-peer:2.5شبکهها در Fabric
مشاهده لیست شبکهها
docker network lsبررسی شبکه fabric_test
docker network inspect fabric_testمیبینید که کدام کانتینرها در این شبکه Docker قرار دارند.
پاکسازی محیط
حذف همه کانتینرهای متوقفشده
docker container pruneحذف همه ایمیجهای بدون استفاده
docker image prune -adocker statsنمایش وضعیت سرویس های Fabric وقتی با docker-compose بالا آوردید.
docker-compose ps
docker-compose -f docker-compose-test-net.yaml ps
مشاهده همزمان لاگ تمام سرویس های فبریک.
docker-compose logs -f
docker-compose -f docker-compose-test-net.yaml logs -fوارد شدن به کانتینرهایی که Bash ندارند (مثلاً Alpine).
docker exec -it <container> sh
docker exec -it orderer.example.com shکپی فایل به داخل کانتینر Fabric.
docker cp <file> <container>:/path
docker cp configtx.yaml cli:/opt/gopath/src/github.com/hyperledger/fabric/peer/کپی فایل از کانتینر به سیستم میزبان.
docker cp <container>:/path ./local
docker cp peer0.org1.example.com:/var/hyperledger/production ./backup/نمایش فرآیند های در حال اجرا در کانتینر (برای تشخیص crash).
docker top <container>
docker top peer0.org2.example.comمشاهده تغییرات فایل سیستم کانتینر نسبت به زمان شروع.
docker diff <container>
docker diff cliفقط لاگ های ۱۰ دقیقه اخیر را نمایش میدهد.
docker logs --since 10m peer0.org1.example.com
(برای تحلیل تراکنش های جدید مفید است.)فقط ۵۰ خط آخر لاگها را نشان می دهد.
docker logs --tail 50 orderer.example.com
(برای خطا های آخر شبکه.)تنظیم برای اجرای خودکار کانتینر پس از ریبوت.
docker update --restart=always <container>
docker update --restart=always orderer.example.comپیدا کردن مسیر داده ها و ولوم ها.
`docker inspect
grep Mounts`لیست تمام volumeها (ledger و MSP معمولاً اینجا هستند).
docker volume ls
برای پاکسازی داده ها استفاده می شود.حذف ledger یا stateDB خاص.
docker volume rm <volume>
docker volume rm fabric_peer0.org1.example.comبررسی وضعیت داخلی Peer node.
docker exec -it peer0.org1.example.com peer node status
خروجی: “OK” یا خطای internal.grep "consensus"`
`docker logs orderer.example.com 2>&1
فیلتر رخداد های مربوط به Raft consensus.
افزودن کانتینر به شبکه Fabric.
docker network connect <net> <container>
اگر chaincode جدا ساختی، با این دستور متصلش کن.جدا کردن کانتینر از شبکه فبریک.
docker network disconnect <net> <container>
برای جداسازی موقت nodeها.تغییر نام کانتینر بدون حذف آن.
docker rename <old> <new>
docker rename peer0.org1.example.com peer0.org1.test
ریست سریع Peer یا Orderer بدون حذف داده.
docker restart <container>
docker restart orderer.example.comنمایش حجم مصرفی Docker (ایمیج ها، ولوم ها، کانتینر ها).
docker system df
برای آزادسازی فضا در سیستم.خروجی گرفتن از یک کانتینر Fabric به صورت فایل TAR.
docker export <container> -o backup.tar
docker export peer0.org1.example.com -o peer_backup.tar
بازگردانی کانتینر export شده به ایمیج جدید.
docker import backup.tar <new_image>
docker import peer_backup.tar fabric-peer-backupحذف کامل تمام سرویس ها و volume ها.
docker-compose down -v
پاکسازی ledger و داده ها.حذف همه ی چیز های بلا استفاده (خطرناک ولی مفید برای reset).
docker system prune -a --volumes
برای ریست کامل محیط Fabric.نمایش سریع وضعیت منابع همه کانتینر ها.
docker stats --no-stream
مانیتورینگ سریع بدون stream.مانیتور زنده رخداد های Docker (شروع/توقف کانتینر).
docker events
برای تشخیص ری استارت های ناگهانی در شبکه.grep "Certificate"`
`docker logs ca_org1 2>&1
بررسی صدور گواهی جدید از CA.ریست فقط CA Server.
docker-compose restart ca_org1
زمانی که Fabric CA دچار خطا شده.حذف تمام کانتینر ها با یک دستور.
docker rm $(docker ps -aq)
بعد از پایین آوردن شبکه.حذف تمام ایمیج ها.
docker rmi $(docker images -q)
برای تمیز کردن کامل سیستم قبل از rebuild.بررسی سلامت سرویس Peer بدون مشاهده لاگ.
docker exec -it <peer> peer node status
docker exec -it peer0.org1.example.com peer node statusلیست کانال هایی که Peer در آن عضو است.
docker exec -it <peer> peer node list
docker exec -it peer0.org1.example.com peer channel listنمایش chaincodeهای نصب شده روی peer.
docker exec -it <cli> peer chaincode list --installed
docker exec -it cli peer lifecycle chaincode queryinstalledنمایش chaincode های فعال در شبکه.
docker exec -it <cli> peer chaincode list --instantiated
docker exec -it cli peer chaincode list --instantiated -C mychannelgrep "ENDORSED"`
`docker logs 2>&1
فیلتر تراکنش های تأیید شده (endorsement).grep "Validation"`
`docker logs 2>&1
مشاهده فرآیند اعتبار سنجی بلاک ها.grep "HostPort"`
`docker inspect
مشاهده پورت های منتشر شده peer.مانیتور لحظه ای رخداد های خاص برای peer.
docker events --filter container=peer0.org1.example.com
بررسی crash یا restart خودکار.تغییر نام کانتینر peer یا orderer.
docker rename <old_name> <new_name>
docker rename orderer.example.com orderer1.example.comاطمینان از راه اندازی خودکار کانتینر ها پس از reboot.
docker update --restart unless-stopped <container>
برای شبکه پایدار fabric.ورود به orderer جهت مشاهده blockfile.
docker exec -it <orderer> bash
مسیر معمول: /var/hyperledger/production/ordererدیدن لیست کانال ها در Ledger.
docker exec -it <peer> ls /var/hyperledger/production/ledgersData/chains/chains
بررسی داده های ذخیره شده در peer.گرفتن بکاپ کامل از ledger peer.
docker cp <peer>:/var/hyperledger/production/ledgersData ./ledger_backup
برای انتقال شبکه یا snapshot.بازگردانی ledger به ایمیج جدید.
docker import ledger_backup.tar fabric-ledger:backup
برای آزمایش در شبکه جدید.دیدن metadata ایمیج Fabric Peer.
docker image inspect hyperledger/fabric-peer
بررسی نسخه دقیق Fabric.
اعتبار سنجی فایل docker-compose.yaml.
docker-compose config
پیدا کردن خطا های YAML در شبکه.اجرای فقط یک سرویس خاص.
docker-compose up -d peer0.org1.example.com
بالا آوردن مجدد یک peer خراب.ریست مجدد فقط orderer.
docker-compose restart orderer.example.com
بدون دست زدن به بقیه سرویس ها.ریست هم زمان تمام کانتینر های Fabric.
docker restart $(docker ps -q)
در صورت نیاز به refresh کلی.grep -A5 Environment`
`docker inspect
دیدن متغیر های محیطی Fabric peer.اطلاعات کامل سیستم Docker.
docker system info
برای بررسی سلامت daemon.ساخت ایمیج اختصاصی برای peer با تنظیمات دلخواه.
docker build -t myfabric-peer .
مثلاً peer با plugin سفارشی.تغییر نام ایمیج Fabric برای نسخه بندی.
docker tag <image> <new_name>
docker tag hyperledger/fabric-peer:2.5 peer:v2.5-customانتشار ایمیج Fabric در ریپازیتوری خصوصی.
docker push <repo>/fabric-peer:v2.5
مخصوص DevOps یا CI/CD.حذف کامل ایمیجها، ولومها و شبکه.
docker-compose down --rmi all --volumes
برای ریست کلی Fabric.grep Path`
`docker inspect
نمایش مسیر اجرای peer node.دیدن پروسه های در حال اجرا در peer.
docker exec -it <peer> ps aux
مثلاً chaincode processes.grep "enroll"`
`docker logs <ca_container> 2>&1
بررسی عملیات enroll کاربران در CA.بررسی DNS داخلی شبکه docker.
docker exec -it <peer> cat /etc/hosts
اطمینان از اتصال به orderer.دیدن کانتینر های متصل به شبکه bridge.
docker network inspect bridge
بررسی ارتباط بین peer و couchdb.فقط وضعیت (running/exited) را نشان می دهد.
docker inspect --format '{{.State.Status}}' <container>
برای اسکریپت های مانیتورینگ.دیدن لاگ پایگاه داده CouchDB.
docker-compose logs couchdb
دیباگ در queryهای chaincode.grep "GetState"`
`docker logs -f peer0.org1.example.com
فیلتر عملیات خواندن از world state.grep "PutState"`
`docker logs -f peer0.org1.example.com
فیلتر عملیات نوشتن داده در ledger.gzip > orderer_backup.tar.gz`
`docker export orderer.example.com
بکاپ فشرده از orderer.بازگردانی orderer از بکاپ.
docker import orderer_backup.tar.gz fabric-orderer:restored
استفاده در شبکه تست جدید.توقف اجباری همه سرویس ها.
docker-compose kill
وقتی بعضی سرویس ها قفل کرده اند.tail -n 100`
`docker logs
آخرین ۱۰۰ خط لاگ peer.دیدن chaincode هایی که commit شدهاند.
docker exec -it cli peer lifecycle chaincode querycommitted
بررسی صحت نصب chaincode.نمایش ارتفاع بلاک در peer.
docker exec -it <peer> peer channel getinfo -c mychannel
خروجی شامل Height و CurrentBlockHash.پیشنهاد ویژه: آموزش بلاکچین
پیشنهاد مطالعه: نصب و راهاندازی Chaincode آماده Asset Transfer Basic در هایپرلجر فابریک

مریم گوهرزاد
مدرس و بنیانگذار هلدینگ آرتا رسانه. برنامه نویس و محقق حوزه بلاکچین
نظر خودتون رو با ما در میون بزارید
فیلدهای ستاره دار الزامی هستند . ایمیل شما منتشر نمیشود.




