Docker- मशीन VirtualBox उदाहरण में ssh कैसे करें?


83

docker- मशीन संस्करण 0.2.0 docker संस्करण 1.6.2

मैं VirtualBox का उपयोग करके एक मशीन बनाने के लिए docker- मशीन का उपयोग कर रहा हूं । सब कुछ ठीक काम करता है, लेकिन मैं मशीन में ही ssh करना चाहता हूं और मुझे यह करने के लिए कोई निर्देश नहीं मिला। मैं ssh पोर्ट से जुड़ सकता हूं:

ssh $(docker-machine ip dev)

लेकिन मुझे पता नहीं है कि उपयोग करने के लिए उपयोगकर्ता नाम / पासवर्ड / पहचान फ़ाइल क्या है।


4
यदि आप -1 टिप्पणी करते हैं और समझाते हैं कि इस प्रश्न में क्या गलत है और पूछने वाले को संशोधन करने की अनुमति दें।
रॉय ट्रूवेल

कंटेनर के अंदर कनेक्ट करने के लिए अनुशंसितdocker exec -it my_container /bin/bash डॉक रास्ता docs docs.docker.com/reference/commandline/cli/#exec
user2915097

@ user2915097 सवाल यह था कि मशीन में खुद को डॉकटर कंटेनर में नहीं डालना चाहिए
रॉय ट्रूवेल

1
यदि उनके पास कोई प्रोग्रामिंग सामग्री नहीं है, तो बहुत सारे डॉकर प्रश्न अस्वीकृत हो जाते हैं। तर्क से, यह सवाल एसएफ पर होना चाहिए, लेकिन यह वास्तव में एक निर्णय कॉल है।
एड्रियन मौट

जवाबों:


121

आप बस चलाकर डॉकटर-मशीन मेजबानों में प्रवेश कर सकते हैं

docker-machine ssh default

(यहां "डिफ़ॉल्ट" होस्ट का उपयोग करके)

पहचान फ़ाइलों के तहत संग्रहीत किया जाना चाहिए ~/.docker/machine/machines। यदि आप एक कंटेनर (जैसे कि मेजबान के विपरीत) में लॉग इन करना चाहते हैं, तो docker execuser2915097 द्वारा सुझाए अनुसार उपयोग करें ।


इसलिए मेरे पास एक और पीसी है (रिमोट होस्ट को सेटअप करने के लिए प्रयुक्त एक से अलग) और मैं इस पीसी पर डॉकटर-मशीन के माध्यम से इसे एक्सेस करने में सक्षम होना चाहता हूं (ठीक उसी तरह जैसे मैं प्रावधान करने के लिए उपयोग किया जाता हूं)। मैं उसे करके देखूं तो?
माहोरी

71

अगर आपको वास्तव में इसके माध्यम से करने की आवश्यकता है, तो यह sshडॉकटर 1.8.2 के साथ काम कर रहा है

init docker:

eval "$(docker-machine env default)"

अपने डिफ़ॉल्ट डॉक मशीन से आईपी प्राप्त करें:

docker-machine ip default

यह कुछ इस तरह प्रिंट करता है: 192.168.99.100

ssh docker@192.168.99.100

पासवर्ड है, tcuserलेकिन आप पहचान फ़ाइल का उपयोग भी कर सकते हैं, अन्य उत्तर देखें


8
मैं बहुत उत्सुक हूं कि आपको कैसे पता चला कि पासवर्ड है tcuser। क्या आप अपना रहस्य प्रकट करेंगे, कृपया :-)
fmquaglia

2
कहीं और पाया, लेकिन आप इसे यहाँ भी देख सकते हैं: github.com/docker/machine/search?utf8=%E2%9C%93&q=tcuser
timaschew

25

अंत में, मुझे एक उत्तर मिला:

मैं डॉकर टूलबॉक्स (डॉकर मशीन) के साथ विंडोज पर हूं।

अगर मैं docker-machine -D ssh default , मुझे लगता है कि SSH पैरामीटर होना चाहिए:

होस्ट: लोकलहोस्ट
पोर्ट: 51701
उपयोगकर्ता: डॉकटर
: docker कुंजी:। डॉकर मशीन / मशीनें \ default \ id_ra

जब मैं मैच करने के लिए अपनी पोटीन / MobaXterm सेटिंग्स को बदल देता हूं, तो मैं एसएसएच को कंटेनर में रख सकता हूं।


अरे, धन्यवाद। परिणामों के शीर्ष पर अपना उत्तर मिला। घंटों की हताशा से मुझे बचाया। +1
f123

1
जोड़ने के लिए, मेरे मामले में SSH पोर्ट 58361 था। -D ध्वज का उपयोग करते समय सभी आवश्यक विवरण मुद्रित किए जाते हैं। Using SSH client type: external {[-o BatchMode=yes -o PasswordAuthentication=no -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -o ConnectionAttempts=3 -o ConnectTimeout=10 -o ControlMaster=no -o ControlPath=none docker@127.0.0.1 -o IdentitiesOnly=yes -i C:\Users\<user>\.docker\machine\machines\default\id_rsa -p 58361] C:\Program Files\Git\usr\bin\ssh.exe}
रोहितमोहता

मैं इसे कहां से प्राप्त कर सकता हूं docker-machine inspect? इसने नॉन लोकल एड्रेस को Driver->IPAddressवेरिएबल
फाल्को

12

हैकरों के लिए, यहां एक स्क्रिप्ट है जो 'सक्रिय' डॉकटर-मशीन में जाएगी। यह आपको ssh_key, ssh_port, और ssh_user के लिए मान भी देता है, जिससे rsyncलोकलहोस्ट और VM के बीच चीजें करना संभव हो जाता है ।

#!/bin/bash
docker_machine_name=$(docker-machine active)
docker_ssh_user=$(docker-machine inspect $docker_machine_name --format={{.Driver.SSHUser}})
docker_ssh_key=$(docker-machine inspect $docker_machine_name --format={{.Driver.SSHKeyPath}})
docker_ssh_port=$(docker-machine inspect $docker_machine_name --format={{.Driver.SSHPort}})

ssh -i $docker_ssh_key -p $docker_ssh_port $docker_ssh_user@localhost

आप इसे अपने टर्मिनल में कॉपी और पेस्ट कर सकते हैं, लाइन के लिए लाइन कर सकते हैं, और यह काम करेगा। या, स्क्रिप्ट को एक फंक्शन में बनाएँ, और इसे एक तर्क के रूप में नाम दें।


5

यदि किसी कारण से आप इसके बजाय sshकमांड का उपयोग करेंगे docker-machine ssh, तो आप कर सकते हैं

ssh `docker-machine ip machine_name` -ldocker -i ~/.docker/machine/machines/machine_name/id_rsa

2

मैक OX के लिए, मशीन और उसकी कुंजी यहां स्थित हैं (सुनिश्चित करें कि आपके पास वहां की चाबियाँ हैं, नीचे कुछ इस तरह है:

~/project/dev/docker_notes za$ ls /Users/za/.docker/machine/machines/default/
.DS_Store        ca.pem           config.json      disk.vmdk        id_rsa.pub       server-key.pem
boot2docker.iso  cert.pem         default/         id_rsa           key.pem          server.pem

1) सूची उपलब्ध वीएमएस।

> ~/project/dev/docker_notes za$ docker-machine ls
>     NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
>     default   -        virtualbox   Running   tcp://192.168.99.100:2376           v1.11.0

मेरे मामले में, मशीन का नाम डिफ़ॉल्ट है। बस ऐसे

~/project/dev/docker_notes za$ docker-machine ssh default


                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.11.0, build HEAD : 32ee7e9 - Wed Apr 13 20:06:49 UTC 2016
Docker version 1.11.0, build 4dc5990
docker@default:~$ vi 
.ash_history  .ashrc        .docker/      .local/       .profile      .ssh/         log.log
docker@default:~$ ls
log.log

जैसा कि आप देख सकते हैं, मैं docker- मशीन / उदाहरण में ssh करने में सक्षम हूं।

docker@default:~$ uname -a
Linux default 4.1.19-boot2docker #1 SMP Thu Apr 7 02:41:05 UTC 2016 x86_64 GNU/Linux

आप इसे> howto - docker को भी फॉलो कर सकते हैं


-1

हम निम्नलिखित आदेश के माध्यम से docker में ssh भी कर सकते हैं -

docker exec -it / bin / sh

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.