توضیح دستورات داکر – این قسمت docker history, login, logout, logs, port, diff

دستور docker history: این دستور تاریخچه‌ ایمیج را در اختیار ما قرار می‌دهد.docker history --helpاین دستور دارای آپشن‌های زیر می‌باشد که در ادامه توضیح داده می‌شود.آپشن q-: این آپشن تنها id ایمیج‌های واقع در تاریخچه را نمایش می‌دهد.آپشن H-: این آپشن خروجی را متناسب با انسان نمایش می‌دهد که به صورت پیش‌فرض فعال است. در خروجی حجم ایمیج‌ها را به صورت صحیح و با MB یا GB نمایش می‌دهد در صورتی که این آپشن غیر فعال باشد تمام موارد بر اساس بایت نمایش می‌دهد.آپشن no-trune: دیگر برخی از موارد را مختصر نمی‌کند و کامل نمایش می‌دهد.آپشن format: با این آپشن شما می‌توانید خروجی را طبق نظر خودتون تنظیم کنید. مواردی که می‌توانید در خروجی آنها را قرار دهید به قرار زیر است.docker history --formatبرای درک بهتر این دستور به مثال‌های زیر توجه کنید. $ docker history busybox:latest IMAGE CREATED CREATED BY SIZE COMMENT 8c811b4aec35 12 days ago /bin/sh -c #(nop) CMD ["sh"] 0B <missing> 12 days ago /bin/sh -c #(nop) ADD file:5f0439d8328ab58c0… 1.15MB $ docker history --format "{{.ID}}: {{.Size}} +++ DockerMe.ir" busybox:latest 8c811b4aec35: 0B +++ DockerMe.ir <missing>: 1.15MB +++ DockerMe.irمنبعدستور docker login:با استفاده از این دستور می‌توانید داخل ریجیستری لاگین کنید. اطلاعات مربوط به لاگین شما به صورت رمزنگاری شده در داکر کلاینت شما ذخیره می‌شود و تا زمانی که از آن ریجیستری logout نکنید این اطلاعات برقرار می‌باشد. نکته‌ اینکه می‌توانید به چندین ریجیستری به صورت همزمان نیز لاگین کنید. می‌توانید از روش‌های مختلفی نیز برای قرار دادن پسورد و اطلاعات مربوط به لاگین خود نیز استفاده کنید. این موضوع شامل ریجیستری‌های عمومی و خصوصی می‌شود. اطلاعات ورود و دسترسی شما به ریجیستری معمولا در مسیر زیر ذخیره می‌شود.$HOME/.docker/config.jsonآپشن p-: با استفاده از آن می‌توانید پسورد را در دستور قرار بدهید. این موضوع از نظر امنیتی مشکل داشته و پسورد در history سرور باقی خواهد ماند.آپشن password-stdin: پسورد را از روی یک فایل دریافت می‌کند.آپشن u-: آپشن مربوط به حساب کاربری می‌باشد.برای مشخص‌تر شدن موضوع به مثال‌های زیر توجه کنید. دقت کنید اگر اطلاعات کاربری را در دستور وارد شده قرار ندهید بعد از اعمال دستور این موارد که شامل user و pass می‌باشد را از شما سوال می‌کند.$ docker login https://docker.dockerme.ir $ docker login --username admin https://docker.dockerme.ir $ cat test.txt | docker login --username admin --password-stdin https://docker.dockerme.ircat /home/ahmad/.docker/config.json { "auths": { "docker.dockerme.ir": { "auth": "YWRtaW46WWFAQWJiYXM=" } } }اگر لینک ریجیستری را نیز وارد نکنید به صورت پیش‌فرض به https://hub.docker.com وصل خواهد شد که یک ریجیستری عمومی است و برای لاگین به آن و قرار دادن ایمیج‌های خود در آن از طریق این لینک باید ثبت‌نام انجام دهید.$ docker login Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one. $ cat test.txt | docker login --username ahmadrafiee --password-stdin Login Succeeded $ cat /home/ahmad/.docker/config.json { "auths": { "docker.dockerme.ir": { "auth": "YWRtaW46WWFAQWJiYXM=" }, "https://index.docker.io/v1/": { "auth": "YWhtYWRyYWZpZWU6WWFAQWJiYXM=" } }همانطور که ملاحضه می‌کنید در حال حاضر در دو تا ریجیستری لاگین هستم و اطلاعات ورود هر دو تا ریجیستری موجود می‌باشد.منبعدستور docker logout:با این دستور از ریجیستری که لاگین کرده بودیم قبلا خارج می‌شود و اطلاعات ارتباط با آن برداشته می‌شود.docker logout --helpاین دستور آپشن دیگری ندارد. اگر بدون لینک ریجیستری دستور را وارد کنید به صورت پیشفرض اگر اطلاعات مربوط به لاگین در ریجیستری داکر وجود داشته باشد آن را پاک می‌کند. به مثال زیر توجه کنید در ابتدا اطلاعات مربوط به لاگین وجود دارد و بعد از logout اون اطلاعات برداشته می‌شود.$ cat /home/ahmad/.docker/config.json { "auths": { "docker.dockerme.ir": { "auth": "YWRtaW46WWFAQWJiYXM=" }, "https://index.docker.io/v1/": { "auth": "YWhtYWRyYWZpZWU6WWFAQWJiYXM=" } } } $ docker logout Removing login credentials for https://index.docker.io/v1/ cat /home/ahmad/.docker/config.json { "auths": { "docker.dockerme.ir": { "auth": "YWRtaW46WWFAQWJiYXM=" } } }دستور docker logs:با استفاده از این دستور لاگ کانتینر را مشاهده می‌کنید. به صورت پیش فرض تمام لاگ‌ کانتیری که در مقابل دستور باشد را به شما نمایش می‌دهد.docker logs --helpنکته‌ی مهم اینکه اگر لاگ درایور سرویس داکر خود را تغییر داده باشید ممکن است این دستور برای شما کار نکند. این دستور تنها در زمان استفاده از لاگ درایور json-file یا journald کار می‌کند. در این لینک در مورد درایور لاگ داکر بیشتر صحبت شده است.آپشن details: موارد اضافه‌تری را در لاگ به شما نمایش می‌دهد.آپشن -f: با استفاده از این آپشن لاگ کانتینر را فالو می‌کند و همواره آن را نمایش می‌دهد تا زمانی که شما خودتون از این دستور خارج شوید. آپشن since: با این آپشن می‌توان زمان تعیین کرد به این صورت که از این زمان به بعد لاگ را در اختیار من قرار بده.آپشن tail: این دستور تعداد خط‌های آخر را مشخص می‌کند مثلا ۱۰۰ خط آخر را نمایش بده یا اینکه ۱۰ خط آخر لاگ را به من نمایش بده. حال ترکیب این آپشن با آپشن f- همواره ۱۰ خط آخر لاگ را به شما نمایش می‌دهد. اگر از این آپشن استفاده نکنید به صورت پیش‌فرض تمام خط‌های لاگ را به شما نمایش می‌دهد.آپشن -t: زمان اتفاقات را نیز در لاگ به شما نمایش می‌دهد.آپشن until: با این آپشن می‌توان زمان تعیین کرد به این صورت که تا این زمان لاگ را به من نشان بده.نکته‌ی مهم اینکه این دستور بسیار مهم می‌باشد و به شدت به فرآیند رفع مشکل کمک می‌کند. برخی از ترکیب‌های خوب این دستور در ادامه آورده شده است.$ docker logs -f my-container $ docker logs -f --tail 100 my-container $ docker logs -f --tail 100 -t my-container منبعدستور docker port:لیست پورت‌های که از سرور به کانتینر مپ شده است را نمایش می‌دهد. هیچ‌گونه آپشنی هم ندارد.docker port --helpبه مثال‌های زیر توجه کنید.$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b650456536c7 busybox:latest top 54 minutes ago Up 54 minutes 0.0.0.0:1234->9876/tcp, 0.0.0.0:4321->7890/tcp test$ docker port test 7890/tcp -> 0.0.0.0:4321 9876/tcp -> 0.0.0.0:1234$ docker port test 7890/tcp 0.0.0.0:4321$ docker port test 7890/udp 2014/06/24 11:53:36 Error: No public port '7890/udp' published for test$ docker port test 7890 0.0.0.0:4321دستور docker diff:توضیحی از تغییرات داخل فایل یا دایرکتوری‌های داخل کانتینر در اختیار ما قرار می‌دهد. این دستور نیز هیچ‌گونه آپشنی ندارد.docker diff --helpبرای نمایش تغییرات از سمبلیک‌هایی استفاده می‌کند که در ادامه توضیح داده می‌شود.سمبل A: یعنی اینکه یک فایل یا دایرکتوری اضافه شده است.سمبل D: یعنی اینکه فایل یا دایرکتوری پاک شده است.سمبل C: یعنی اینکه فایل یا دایرکتوری تغییر کرده است.به صورت زیر از این دستور استفاده می‌شود.$ docker diff my-container C /tmp D /tmp/hsperfdata_jenkins A /tmp/hsperfdata_jenkins/8 D /tmp/jetty-0.0.0.0-8080-war-_-any-4465523861556992604.dir A /tmp/jffi8867713240318490067.tmp D /tmp/jna--1712433994 A /tmp/winstone1616795870189931273.jarآموزش داکر و پلتفرم https://docme.ir