প্রশ্ন ব্যাকগ্রাউন্ড মোডে একটি চলমান ধারক মধ্যে bash বা ssh পেতে কিভাবে?


আমি একটি চলমান docker ধারক মধ্যে ssh বা bash করতে চান। দয়া করে উদাহরণ দেখুন:

$ sudo docker run -d webserver
webserver is clean image from ubuntu:14.04
$ sudo docker ps
CONTAINER ID  IMAGE            COMMAND    CREATED STATUS  PORTS          NAMES
665b4a1e17b6  webserver:latest /bin/bash  ...     ...     22/tcp, 80/tcp loving_heisenberg 

এখন আমি এই মত কিছু পেতে চাই (চলমান ধারক মধ্যে যান):

$ sudo docker run -t -i webserver (or maybe 665b4a1e17b6 instead)
$ root@665b4a1e17b6:/# 
However when I run the line above I get new CONTAINER ID
$ root@42f1e37bd0e5:/#

আমি Vagrant ব্যবহৃত এবং আমি অনুরূপ আচরণ পেতে চাই vagrant ssh


797
2017-08-01 16:19


উত্স


অন্যথায় sudo docker exec -i -t 665b4a1e17b6 /bin/sh apt প্রোগ্রাম এবং প্যাকেজ ইনস্টল করতে সক্ষম হতে - fonjeekay


উত্তর:


উত্তর ডকার এর attach কমান্ড। সুতরাং উপরে আমার উদাহরণের জন্য, সমাধান হবে:

$ sudo docker attach 665b4a1e17b6 #by ID
or
$ sudo docker attach loving_heisenberg #by Name
$ root@665b4a1e17b6:/#

ডকার সংস্করণ 1.3 বা তারপরে: ব্যবহারকারীর জন্য ধন্যবাদ WiR3D যারা একটি ধারক এর শেল পেতে অন্য উপায় প্রস্তাব। আমরা ব্যবহার করি attach আমরা শেল শুধুমাত্র এক উদাহরণ ব্যবহার করতে পারেন। তাই যদি আমরা একটি কন্টেইনারের শেলের একটি নতুন উদাহরণ সহ একটি নতুন টার্মিনাল খুলতে চাই, তবে আমাদের কেবল নিম্নলিখিতটি চালানো দরকার:

$ sudo docker exec -i -t 665b4a1e17b6 /bin/bash #by ID

অথবা

$ sudo docker exec -i -t loving_heisenberg /bin/bash #by Name
$ root@665b4a1e17b6:/#

1181
2017-08-05 06:01



বিকল্পভাবে, চালানো sudo docker attach loving_heisenberg - thiagowfx
সংযুক্ত কমান্ডটি আমার জন্য কাজ করে না, এটি ডকারকে নিশ্চিহ্ন করে তোলে .. কোন ধারনা কেন ঘটছে? - Mo J. Mughrabi
Boot2docker ব্যবহারকারীদের জন্য একটি অনুস্মারক: sudo সরান :) - Henno
-i -t সমান -it - pasha.zhukov
এটি একটি বিপজ্জনক উত্তর নির্বাচন করা এবং অত্যন্ত ভোট দেওয়া হয়। docker attachউদাহরণস্বরূপ, মংডোডিবির একটি উদাহরণে উদাহরণটি মারবে। হিসাবে আরো বিস্তারিত ব্যাখ্যা এই প্রশ্ন  attach এবং exec বিভিন্ন প্রাণী। - fwc


ডকার 1.3 এর থেকে পরবর্তী:

docker exec -it <containerIdOrName> bash

মূলত, ডকার কন্টেইনার ব্যবহার করে শুরু করা হয় /bin/bash কমান্ড ব্যবহার করে আপনি এটি ব্যবহার করতে পারেন attach। যদি না হয়, তবে কন্টেইনারের ভিতরে একটি বাশ ইনস্ট্যান্স তৈরি করতে আপনাকে কমান্ডটি কার্যকর করতে হবে exec

এছাড়াও ব্যাশ ছাড়াই ব্যাশ ছাড়াই বর্বর প্রক্রিয়া চলছে:

exit

হ্যাঁ, এটা যে সহজ।


586
2017-10-29 07:46



এখনও ন্যানো কিভাবে কাজ করতে ন্যানো খুঁজে figured। Fusion থেকে ডকার-এসএসসি জড়িত হতে পারে যে থিংঙ্ক - WiR3D
Dockers ডিফল্ট দ্বারা bash সেট করার কোন উপায় আছে? - ipeacocks
@ পাইপাকক্স হ্যাঁ, যদি RUN dockerfile কমান্ড হয় /bin/bash। কিন্তু আপনি কি মানে তা নির্ভর করে। আপনি কনটেইনারটি চালাতে চান এবং তার সাথে চলমান একই টার্মিনালে অবিলম্বে উপলব্ধ ব্যাশ আছে -it এটা করা উচিত - WiR3D
ডকার গ্রুপ ব্যবহার করে খারাপ অভ্যাস। ডকার গ্রুপের যে কোনও ব্যবহারকারী মূলত সুডো ব্যবহারের প্রয়োজন ছাড়া রুট অনুমতিগুলির সাথে ব্যবহার করা হয়। projectatomic.io/blog/2015/08/... - Maiku Mori
আমি মনে করি এটি কোন হোস্ট সুরক্ষা দৃষ্টিকোণ থেকে, আপনি ব্যবহার করেন কিনা তা থেকে অনেক পার্থক্য করে না sudo বনাম docker গ্রুপ। যেকোনো উপায়ে, ডকারে নির্মিত সুরক্ষা গর্ত রয়েছে যা অতিথি থেকে হোস্ট ফাইল সিস্টেমের সম্পূর্ণ সুবিধা প্রদান করতে পারে - আপনি ডকার গ্রুপটি ব্যবহার করেন কিনা তা নির্বিশেষে নাকি sudo ধারক আরম্ভ করা। - nobar


যদিও প্রশ্নটির লেখক বিশেষভাবে বলেছিলেন যে তারা একটি চলমান পাত্রে আগ্রহী, তবে এটি ধার্য করাও যে কনটেইনারটি চলছে না, তবে আপনি এটি চালানোর জন্য এটি চালানোর জন্য চালাতে পারেন:

docker run -i -t --entrypoint /bin/bash <imageID>


101
2017-11-07 18:46



এটি @ ক্যাকক্সরের উত্তরের মত একটি ভিন্ন ধারক দেয়। - Blaisorblade


এটা চেষ্টা কর:

sudo docker run -i -t webserver /bin/bash

উৎস: https://docs.docker.com/articles/basics/#running-an-interactive-shell


24
2017-08-01 16:29



এটি উপযুক্ত নয়, কারণ আমি বিভিন্ন কন্টেইনার আইডি পেয়েছি (root@42f1e37bd0e5:/# এবং না root@665b4a1e17b6:/#) - Timur Fayzrakhmanov
লিঙ্ক মৃত, আপনি আপডেট করা উচিত - Ahmet Karakaya


@ টিমুরের প্রশ্নের উপর ভিত্তি করে আমি নিম্নলিখিত তৈরি করেছি সহজ স্ক্রিপ্ট

সেটআপ

রাখুন docker-ssh আপনার ফাইল $PATH নিম্নলিখিত বিষয়বস্তু সঙ্গে

#!/bin/bash -xe

# docker container id or name might be given as a parameter
CONTAINER=$1

if [[ "$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 (প্রথম কল)

$> docker-ssh 50m3r4nd0m1d

13
2018-04-20 11:39



আমি জানি কেন শেষ পর্যন্ত আমাদের দরকার? - Nam G VU
লগইন শেল হিসাবে ব্যাশ শুরু করতে, পরিবেশ পরামিতিগুলি পড়তে (কমান্ডের উপরে লাইনে বর্ণিত) - Matyas


আমি একটি পাতানো SSH সার্ভার তৈরি করেছি যা কোনও চলমান ধারককে SSH ক্ষমতা সরবরাহ করে। আপনি আপনার ধারক পরিবর্তন করতে হবে না। শুধুমাত্র প্রয়োজন ধারক bash আছে।

আপনার যদি 'web-server1' নামে একটি ধারক থাকে। নিচের ডকার রান রানটি দ্বিতীয় কন্টেইনারটি শুরু করবে যা প্রথম কন্টেইনারে SSH সরবরাহ করবে।

docker run -ti --name sshd-web-server1 -e CONTAINER=web-server1 -p 2222:22 \
-v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker \
jeroenpeeters/docker-ssh

আরো পয়েন্টার জন্য, চেকআউট https://github.com/jeroenpeeters/docker-ssh


8
2017-10-03 16:20



এই গৃহীত উত্তর হওয়া উচিত ^ - Nam G VU
যাইহোক, কিভাবে আমরা থাকতে পারে। BashRc আপনার সমাধান ব্যবহার করে একটি এসএসএস সেশন শুরু করার সময় স্বয়ংক্রিয় লোড? এছাড়াও github একটি সমস্যা পোস্ট github.com/jeroenpeeters/docker-ssh/issues/30 - Nam G VU


@ জ্যাপ্পাজাজো একটি আছে এই বিষয়ে ভয়ঙ্কর পোস্ট। সংক্ষিপ্ত উত্তর ব্যবহার করা হবে nsenter:

PID=$(docker inspect --format {{.State.Pid}} <container_name_or_ID>)
nsenter --target $PID --mount --uts --ipc --net --pid

পিএসঃ পোস্টের মতামত নিয়ে আলোচনা করতে ভুলবেন না ...

চিয়ার্স


5
2018-03-14 10:12



যে একটি বরং পুরাতন পোস্ট আর আর প্রয়োজন নেই। @ WiR3D এর docker exec সমাধান বরং আরও সুবিধাজনক। - drevicko


যদি আপনার ধারক ব্যাশ ইনস্টল না থাকে (যেমন কনসুল) আপনি sh চেষ্টা করতে পারেন:

docker exec -it CONTAINER /bin/sh

অথবা শেলের জন্য প্রথমে / bin এ সন্ধান করুন:

docker export CONTAINER|tar -t|egrep ^bin/

3
2017-07-29 13:40



কি "কনসাল"? আপনি এটি জন্য একটি রেফারেন্স আছে? তুমি বোঝাতে চাচ্ছ "কনসোল"? - Peter Mortensen


আপনি ডকার কনটেইনারটি পাইপওয়ার্কের সাথে একটি রুট আইপি ঠিকানা এবং সেই এসএসএইচ পরে যে নতুন আইপি ঠিকানা দিয়ে মেশিনে দিতে পারেন।

এটি একটি অ্যাপ্লিকেশন-নির্দিষ্ট কমান্ড ব্যবহার করার পরিবর্তে আরো "প্রথাগত" (ssh) হবে docker attach, এবং অবশেষে এটি সিস্টেম এবং সংস্করণ জুড়ে আরো 'পোর্টেবল' করতে হবে।


3
2017-10-29 11:58



অনুগ্রহপূর্বক, এটি কিভাবে করবেন তা সহজভাবে যোগ করুন। সৎ হতে হলে, আমি সত্যিই এটি প্রয়োজন, কিন্তু আমার জন্য সহজ সমাধান অনুসন্ধান করার জন্য সময় নেই। আপনি এখানে আপনার উত্তর পোস্ট করতে পারেন? এটা ভাল হবে.. - Timur Fayzrakhmanov
এটি সম্পন্ন করার 2 টি উপায় রয়েছে তবে এটি সহজ নয় এবং একটি বড় পোস্ট হয়ে উঠবে। আপনি এই চেক আউট করতে পারে লিংক পাইপওয়ার্ক বা এই ব্যবহার করার জন্য নিজের দ্বারা লিংক, উইচ মূলত Pipework হিসাবে একই accomplishes এবং একটি বিট আরো সহজ, কিন্তু আপনি নিজে তা করতে হবে। তাই এটি নির্ভর করে যেখানে অনেক সার্ভার সম্পর্কে নির্ভর করে। আপনি আরো নির্দিষ্ট কিছু খুঁজে বের করতে পারবেন না, আমাকে জানাতে। কিন্তু আমার কাছে পুরো টিউটোরিয়াল লেখার সময় নেই। - radriaanse
আপনি সঠিক - এটি করার কোন সুস্পষ্ট এবং সহজ উপায় নেই (লিঙ্কগুলির জন্য ধন্যবাদ, আমি মনে করি আমি পরে এটি পুনর্বিবেচনা করব। - Timur Fayzrakhmanov


docker run -it openjdk:8

এইটা কাজ করে :-)


2
2017-09-06 15:11





কখনও কখনও এটি একটি Docker ধারক মধ্যে ssh করতে সক্ষম হবেন, বিশেষ করে উন্নয়ন সময়। নিচের ডকার ইমেজ একটি ব্যক্তিগত কী ব্যবহার করে একটি ধারক মধ্যে ssh করতে পারবেন:

UbuntuWithSSH-Docker

Dockerfile এর গ্যারান্টি হয় https://gist.github.com/devbkhadka/98792f7bca57f9778793b2db758b3d07


2
2017-08-26 15:26