আমি একটি ডকস্পাইল থেকে একটি ডকার চিত্র তৈরি করেছি। আমি দেখতে পাচ্ছি যে চিত্রটি সফলভাবে নির্মিত হয়েছিল, তবে আমি এটি দিয়ে কী করব? এটি একটি ধারক হিসাবে চালাতে সক্ষম হবে না?
আমি একটি ডকস্পাইল থেকে একটি ডকার চিত্র তৈরি করেছি। আমি দেখতে পাচ্ছি যে চিত্রটি সফলভাবে নির্মিত হয়েছিল, তবে আমি এটি দিয়ে কী করব? এটি একটি ধারক হিসাবে চালাতে সক্ষম হবে না?
উত্তর:
এটি চালানোর নির্দিষ্ট উপায়টি আপনি চিত্রটিকে ট্যাগ / নাম দিয়েছেন কিনা তা নির্ভর করে।
$ docker images
REPOSITORY TAG ID CREATED SIZE
ubuntu 12.04 8dbd9e392a96 4 months ago 131.5 MB (virtual 131.5 MB)
একটি নামের সাথে (আসুন উবুন্টু ব্যবহার করুন ):
$ docker run -i -t ubuntu:12.04 /bin/bash
কোনও নাম ছাড়াই, কেবল আইডি ব্যবহার করে:
$ docker run -i -t 8dbd9e392a96 /bin/bash
আরও তথ্যের জন্য দয়া করে ডকার রান রেফারেন্স দেখুন।
docker ps
পাত্রে তালিকাবদ্ধ করে, চিত্র নয়। আপনি যদি কোনও ধারক থেকে একটি চিত্র তৈরি করতে চান তবে আপনার অবশ্যই আবশ্যক docker commit
। আপনি ব্যবহার করতে পারেন NAME এর (যেমন কমিট মধ্যে docker commit _NAME_ _imagename_
)
নিম্নলিখিত পদক্ষেপগুলি করুন:
$ docker images
আপনি নির্দিষ্ট ট্যাগ সহ সমস্ত স্থানীয় ডকার চিত্রের একটি তালিকা পাবেন।
$ docker run image_name:tag_name
যদি আপনি নির্দিষ্ট না করেন তবে tag_name
এটি স্বয়ংক্রিয়ভাবে 'সর্বশেষ' ট্যাগ সহ একটি চিত্র চালাবে।
পরিবর্তে image_name
, আপনি একটি চিত্র আইডি নির্দিষ্ট করতে পারেন (কোনও ট্যাগ_নাম নেই)।
ডকার চিত্রগুলি তালিকাভুক্ত করতে
$ docker images
যদি আপনার অ্যাপ্লিকেশনটি 80 বন্দর দিয়ে চলতে চায় এবং আপনি স্থানীয়ভাবে বাঁধাই করতে একটি ভিন্ন পোর্ট প্রকাশ করতে পারেন তবে 8080 বলুন:
$ docker run -d --restart=always -p 8080:80 image_name:version
আপনি আপনার উপলব্ধ চিত্রগুলি ব্যবহার করে দেখতে পারেন:
docker images
তারপরে আপনি বিচ্ছিন্ন মোডে চালাতে পারেন যাতে আপনার টার্মিনালটি এখনও ব্যবহারযোগ্য। আপনার কাছে কোনও সংগ্রহস্থল নাম (ট্যাগ সহ বা ছাড়াই) বা চিত্র আইডি ব্যবহার করে এটি চালানোর জন্য বেশ কয়েকটি বিকল্প রয়েছে:
docker run -d repository
docker run -d repository:tag
docker run -d image_id
তারপরে আপনি পরীক্ষা করতে পারেন যে আপনার ধারকটি ব্যবহার করে চলছে
docker ps
docker ps
আপনাকে একটি ধারক আইডি দেয়। আপনি এটি ব্যবহার করে বা কেবল 2/3 প্রথম অক্ষর ব্যবহার করে আপনার ধারকটিতে যেতে ব্যবহার করতে পারেন:
docker exec -it container_id /bin/bash
আর তুমি ব্যবহার করে এটি বন্ধ করতে পারবেন docker stop container_id
এবং docker rm container_id
।
আপনি -rm
আর্গুমেন্ট সহ আপনার ধারকটিও চালাতে পারেন তাই আপনি যদি আপনার ধারক বন্ধ করেন তবে এটি স্বয়ংক্রিয়ভাবে সরানো হবে।
এই কমান্ডটি দিয়ে আপনি যে চিত্রটি চালাতে চান তার নাম বা আইডি পান:
docker images
ডকার রান কমান্ড নিম্নলিখিত পদ্ধতিতে ব্যবহৃত হয়:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
নীচে আমি প্রেরণ, নাম, প্রকাশ, ভলিউম এবং পুনঃসূচনা বিকল্পগুলি চিত্রের নাম বা আইডি নির্দিষ্ট করার আগে অন্তর্ভুক্ত করেছি:
docker run -d --name container-name -p localhost:80:80 -v $HOME/myContainer/configDir:/myImage/configDir --restart=always image-name
কোথায়:
--detach , -d Run container in background and print container ID
--name Assign a name to the container
--publish , -p Publish a container’s port(s) to the host
--volume , -v Bind mount a volume
--restart Restart policy to apply when a container exits
আরও তথ্যের জন্য, দয়া করে অফিসিয়াল ডকার রান রেফারেন্সটি দেখুন ।
ডকারে ওয়েবদেব পরিষেবা চালানোর জন্য এখানে একটি উদাহরণ। চিত্রটির নাম মরিসজবক / ওয়েবডাভ । আপনি এটি ডকার হাব থেকে টানতে পারেন ।
আপনি এই চিত্রগুলি চালনার পরে আপনি এখানে ওয়েবডিএভি ইনস্ট্যান্সেলটি অ্যাক্সেস করতে পারবেন http://localhost:8888/webdav
। অভ্যন্তরীণভাবে ফোল্ডারটি /var/webdav
ওয়েবডিএভি রুট হিসাবে ব্যবহৃত হয়।
আপনি এই ধারকটি নিম্নলিখিত উপায়ে চালাতে পারেন:
$ docker run -d -e USERNAME=test -e PASSWORD=test -p 8888:80 morrisjobke/webdav
আমারও একই সমস্যা ছিল। আমি আমার ডকার ইমেজটি চালিয়েছি এবং এটি একটি নির্দিষ্ট CONTAINER_ID সহ একটি ধারক তৈরি করেছে। আমি একই ধারকটির সাথে কাজ করতে চেয়েছিলাম:
প্রথমে আপনার ডকার চিত্রটি চালান:
docker run -it -p 8888:8888 -p 6006:6006 -v ~/:/host waleedka/modern-deep-learning
তারপরে আপনার তৈরি সমস্ত পাত্রে তালিকাবদ্ধ করুন:
sudo docker ps -a
এবং আপনি যে ধারকটির সাথে কাজ করতে চান তা নির্বাচন করুন (খনিটি 167ddd6d7f15):
sudo docker start -ai 167ddd6d7f15
আপনি যেহেতু ডকফাইফাইল থেকে একটি চিত্র তৈরি করেছেন তাই বর্তমানে চিত্রটি সক্রিয় অবস্থায় নেই। কাজ করার জন্য আপনার এই চিত্রটি একটি পাত্রে চালানো দরকার।
$ docker images
কমান্ড বর্ণনা কিভাবে অনেক ইমেজ বর্তমানে স্থানীয় সংগ্রহস্থলের মধ্যে পাওয়া যায়। এবং
docker ps -a
বর্তমানে কতগুলি পাত্রে পাওয়া যায় তা প্রদর্শন করে, যেমন সক্রিয় এবং বহিরাগত পাত্রে তালিকা।
পাত্রে চিত্রটি চালনার দুটি উপায় রয়েছে:
$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
বিচ্ছিন্ন মোডে:
-d=false: Detached mode: Run container in the background, print new container id
ইন্টারেক্টিভ মোডে:
-i :Keep STDIN open even if not attached
এখানে ডকার রান কমান্ডটি দেওয়া হচ্ছে
$ docker run image_name:tag_name
ডকার রান সম্পর্কে আরও স্পষ্টতার জন্য, আপনি ডকার রান রেফারেন্স দেখতে পারেন ।
এটি ডকারকে বোঝার সেরা উপাদান।
আপনার ডকার হোস্টে সমস্ত চিত্রের একটি তালিকা দেখতে, চালান:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
apache_snapshot latest 13037686eac3 22 seconds ago 249MB
ubuntu latest 00fd29ccc6f1 3 weeks ago 111MB
ইন্টারেক্টিভ মোডে এখন আপনি ডকার চিত্রটি একটি ধারক হিসাবে চালাতে পারেন:
$ docker run -it apache_snapshot /bin/bash
অথবা স্থানীয়ভাবে আপনার যদি কোনও চিত্র না থাকে তবে ডাউনলোড করার জন্য একটি চিত্র অনুসন্ধানের জন্য ডকার হাব অনুসন্ধান করুন:
$ docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian... 6759 [OK]
dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openss... 141 [OK]
rastasheep/ubuntu-sshd Dockerized SSH ser... 114 [OK]
ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS w... 88 [OK]
ubuntu-upstart Upstart is an even... 80 [OK]
ডকার টানুন কমান্ডের সাহায্যে একটি সংগ্রহশালা থেকে ডকার চিত্রটি টানুন:
$ docker pull ubuntu
ধারক হিসাবে ডকার চিত্রটি চালান:
$ docker run -it ubuntu /bin/bash
$ docker images
REPOSITORY TAG IMAGE ID CREATED
jamesmedice/marketplace latest e78c49b5f380 2 days ago
jamesmedice/marketplace v1.0.0 *e78c49b5f380* 2 days ago
$ docker run -p 6001:8585 *e78c49b5f380*
যাদের একই সমস্যা ছিল, তবে তাদের মতো একটি ত্রুটি হয়েছে
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \"bash\": executable file not found in $PATH"
আমি আমার জন্য কাজ করা একটি এন্ট্রি পয়েন্ট যুক্ত করেছি:
docker run -it --entrypoint /bin/sh
বাশ ছাড়া ইমেজ জন্য।
উদাহরণ (অনুমোদিত উদাহরণ থেকে):
run -it --entrypoint /bin/sh ubuntu:12.04
তথ্যসূত্র: https://gist.github.com/mitchwongho/11266726
docker ps -a
এখানে কি কার্যকর নয়?