دستور docker create:
با استفاده از این دستور میتوانید یک کانتینر ایجاد کنید. این دستور دارای آپشنهای بسیار زیادی میباشد که با استفاده از آنها میتوان یک کانتینر ایجاد کرد و تمام مواردی که مد نظر برای ران شدن آن است را در آن لحاظ کرد. بعد از ایجاد کانتینر با تمام موارد مد نظر میتوان آن را start کرد. آپشنهای این دستور با آپشنهای دستور run یکسان میباشد و تنها تفاوت در این است که در دستور run بعد از اجرای دستور کانتینر شروع به کار میکند اما در اینجا کانتینر ایجاد شده است و بعد نیاز است که آن را start کنید. موارد اصلی و مهم این دستور به همراه دستور run توضیح داده میشود.دستور docker run:
با استفاده از این دستور میتوان از روی ایمیجهای موجود یا ایجاد شده کانتینر راهاندازی کرد.
این دستور آپشنهای خیلی زیادی دارد که با استفاده از آنها میتوان هر آن چیزی که لازم است تا روی یک کانتینر اعمال شود انجام گیرد. نکتهی مهمی که هست اینکه توضیح تمام آپشنهای این دستور هم از حوصله این مستند خارج هست و هم تمام این موارد کاربردی نخواهد بود. سعی بر آن است که تمام آپشنهای پر کاربرد توضیح داده شود و مابقی موارد اگر نیاز بود در سناریوهایی که برای تست پیادهسازی میکنیم بررسی میشود.
تعدادی آپشن وجود دارد برای ایجاد محدودیت روی پردازنده و میزان استفاده از رم که حسب نیاز سناریوها توضیح داده میشود.
آپشن d-: کانتینر را در background راهاندازی میکند و تنها id آن را نمایش میدهد.
آپشن dns: میتوان dns server انتخابی به کانتینر اضافه کرد.
آپشن entrypoint: با استفاده از این آپشن میتوان entrypoint به کانتینر داد در غیر این صورت از entrypoint ایمیج استفاده میکند.
آپشن e-: متغیرهای محلی به کانتینر اضافه میکند.
آپشن env-file: متغیرهای محلی را از روی یک فایل دریافت میکند.
آپشن expose: یک پورت یا تعدادی پورت را در معرض (expose) قرار میدهد.
آپشن hostname: برای کانتینر hostname تنظیم میکند.
آپشن i-: به صورت تعاملی کانتینر را راهاندازی میکند.
آپشن ip: به کانتینر ip اختصاص میدهد.
آپشن link: بین کانتینر با کانتینرهای دیگه لینک برقرار میکند.
آپشن l-: برای کانتینر لیبل قرار میدهد.
آپشن device: با استفاده از این آپشن میتوان دیوایسهای سرور هاست را به کانتینر منتقل میکند.
آپشن name: به کانتینر اسم میدهد.
آپشن net: مشخص میکند که این کانتینر از چه شبکهای استفاده کند.
آپشن p-: با استفاده از این آپشن پورت کانتینر را در هاست منتشر (Publish) میکند.
آپشن P-: تمام پورتهایی که در کانتینر وجود دارد را در هاست منتشر میکند.
آپشن privileged: کانتینر را با دسترسی بالا اجرا میکند.
آپشن restart: با استفاده از این آپشن میتوان سیاستهای مختلفی برای ریستارت کانتینر در نظر گرفت.
آپشن rm: به صورت خودکار بعد از متوقف شدن کانتینر آن را پاک خواهد کرد.
آپشن t-: به کانتینر یک tty اختصاص میدهد.
آپشن v-: با استفاده از این آپشن میتوان والیوم به کانتینر اضافه کرد و آن را روی هاست مپ کرد.
آپشن volume-driver: با استفاده از این آپشن میتوان درایور والیوم داکر به خصوصی را برای کانتینر مشخص کرد.
آپشن volumes-from: این آپشن امکان مپ کردن والیوم از یک کانتینر دیگه رو برای ما مهیا میکنه.
آپشن user: با استفاده از این آپشن میتوان name یا uid و group یا gid به کانتینر اختصاص داد.
آپشن sysctl: میتوان آپشن sysctl به کانتینر اعمال کرد.
آپشن w-: محلی که دایرکتوری کاری هنگام شروع به کار کانتینر باشد را مشخص میکند.
خوب دستور run یکی از مهمترین دستورات داکر است که تمام راهاندازی کانتینرها با استفاده از آن انجام میشود. در ادامه برای مشخصتر موضوع از چند مثال استفاده میشود. در مثالهای زیر بیشتر آپشنهای معرفی شده استفاده شده است. به نحوهی استفاده از این آپشنها دقت کنید.
$ docker run --name test -it debian
$ docker run -t -i --privileged ubuntu bash
$ docker run -w /path/to/dir/ -i -t ubuntu pwd
$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
$ docker run --expose 80 ubuntu bash
$ docker run -e MYVAR1 --env MYVAR2=foo --env-file ./env.list ubuntu bash
$ docker run -l my-label --label com.example.foo=bar ubuntu bash
$ docker run -itd --network=my-net --ip=10.10.9.75 busybox
$ docker run --volumes-from 777f7dc92da7 --volumes-from ba8c0c54f0f2:ro -i -t ubuntu pwd
$ docker run --device=/dev/sdc:/dev/xvdc --device=/dev/sdd --device=/dev/zero:/dev/nulo -i -t ubuntu ls -l /dev/{xvdc,sdd,nulo}
$ docker run --restart=always redis
$ docker run --sysctl net.ipv4.ip_forward=1 someimage
در این لینک به خوبی تمام آپشنهای دستور run را قسمت بندی کرده و هر قسمت را به صورت جداگانه بررسی کرده است. آپشنهای این دستور دارای اهمیت است و خیلی مهمه که در سناریوهای تمرینی از تمام این موارد استفاده کرد.