আমি একটি চলমান ডকার পাত্রে এসএসএইচ বা ব্যাশ করতে চাই উদাহরণ দেখুন:
$ sudo docker run -d webserverwebserver is clean image from ubuntu:14.04$ sudo docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES665b4a1e17b6 webserver:latest /bin/bash ... ... 22/tcp, 80/tcp loving_heisenberg
এখন আমি এই মত কিছু পেতে চাই (চলমান ধারক মধ্যে যান):
$ sudo docker run -t -i webserver (অথবা হতে পারে 665b4a1e17b6 পরিবর্তে) $ root@665b4a1e17b6:/#
তবে আমি যখন উপরের লাইনটি চালাই তখন আমি নতুন ধারক আইডি পাই:
$ root@42f1e37bd0e5:/#
আমি ভ্যাগ্রান্ট ব্যবহার করেছি এবং আমি অনুরূপ আচরণ পেতে চাই vagrant ssh.
ডকার সংস্করণ 1.3 বা তার পরে: ব্যবহারকারীকে ধন্যবাদ ডাব্লুআইআর 3 ডি কে একটি ধারক এর শেল পেতে অন্য উপায় প্রস্তাব. যদি আমরা ব্যবহার করি attach আমরা শেল শুধুমাত্র একটি দৃষ্টান্ত ব্যবহার করতে পারেন. সুতরাং আমরা যদি কোনও ধারকটির শেলের নতুন উদাহরণ সহ একটি নতুন টার্মিনাল খুলতে চাই তবে আমাদের কেবল নিম্নলিখিতটি চালানো দরকার:
$ sudo docker exec -i -t 665b4a1e17b6 /bin/bash #by ID
মূলত, যদি ডকার ধারকটি ব্যবহার শুরু করা হয় /bin/bash কমান্ড আপনি এটি ব্যবহার করে অ্যাক্সেস করতে পারেন attach. যদি তা না হয় তবে আপনাকে ব্যবহার করে ধারকটির ভিতরে বাশ উদাহরণ তৈরি করতে কমান্ডটি কার্যকর করতে হবে exec.
এছাড়াও একটি দুর্বৃত্ত প্রক্রিয়া চলমান বাশ গিয়েই বাশ থেকে প্রস্থান করার জন্য:
যদিও প্রশ্নের লেখক বিশেষভাবে বলেছেন যে তারা একটি চলমান ধারকটিতে আগ্রহী, এটিও লক্ষণীয় যে যদি ধারকটি চলমান না থাকে তবে আপনি এটি চালাতে চান চারপাশে খোঁচা দিতে আপনি চালাতে পারেন:
@ তৈমুরের উত্তরের উপর ভিত্তি করে আমি নিম্নলিখিতটি তৈরি করেছি হ্যান্ডি স্ক্রিপ্ট
সেটআপ
করা docker-ssh আপনার ফাইল $PATH নিম্নলিখিত বিষয়বস্তু সঙ্গে
#!/bin/bash -xe# docker container id or name might be given as a parameterCONTAINER=$1if [[ "$CONTAINER" == "" ]]; then # if no id given simply just connect to the first running container CONTAINER=$(docker ps | grep -Eo "^[0-9a-z]{8,}\b")fi# start an interactive bash inside the container# note some containers don't have bash, then try: ash (alpine), or simply sh# the -l at the end stands for login shell that reads profile files (read man)docker exec -i -t $CONTAINER bash -l
নোট: কিছু ধারক থাকে না bash, কিন্তু ash, sh ইত্যাদি এই ক্ষেত্রে bash উপরে স্ক্রিপ্ট প্রতিস্থাপন করা হবে.
ব্যবহার
আপনার যদি কেবল একটি চলমান উদাহরণ থাকে তবে কেবল চালান
$> docker-ssh
অন্যথায়, এটি আপনার কাছ থেকে পাওয়া একটি ডকার আইডি প্যারামিটার সরবরাহ করুন docker ps (প্রথম কর্নেল)
আমি একটি কনটেইনারাইজড এসএসএইচ সার্ভার তৈরি করেছি যা কোনও চলমান ধারককে এসএসএইচ ক্ষমতা সরবরাহ করে আপনি আপনার ধারক পরিবর্তন করতে হবে না. শুধুমাত্র প্রয়োজন ধারক ব্যাশ আছে.
আপনার যদি নাম 'ওয়েব-সার্ভার 1'সহ একটি ধারক থাকে নিম্নলিখিত ডকার রান কমান্ডটি দ্বিতীয় ধারক শুরু করবে যা প্রথম ধারকটির জন্য এসএসএইচ সরবরাহ করবে
অনুসরণ করুন অনুসরণ করা কর্মসমূহ: অনুসরণ না করা অবরুদ্ধ অবরোধ মুক্ত মুলতুবি বাতিল এই বিষয় সম্পর্কে দুর্দান্ত পোস্ট. সংক্ষিপ্ত উত্তর ব্যবহার করা হবে nsenter:
আপনি ডকার ধারকটিকে পাইপওয়ার্ক সহ একটি রুটেবল আইপি ঠিকানাও দিতে পারেন এবং এর পরে এসএসএইচ সেই নতুন আইপি ঠিকানা দিয়ে মেশিনে
অ্যাপ্লিকেশন - নির্দিষ্ট কমান্ডটি ব্যবহার করার পরিবর্তে এটি আরও "ট্র্যাডিশনাল" (এসএসএইচ) হবে docker attach, এবং শেষ পর্যন্ত সিস্টেম এবং সংস্করণ জুড়ে এটি আরো 'পোর্টেবল' করতে হবে.
কখনও কখনও এটি একটি ডকার ধারক মধ্যে এসএসএইচ করতে সক্ষম হতে সহজ হবে, বিশেষ করে উন্নয়নের সময় নিম্নলিখিত ডকার চিত্রটি একটি ব্যক্তিগত কী ব্যবহার করে একটি পাত্রে এসএসএইচ করতে দেয়: