Docker-machine VirtualBox örneğine ssh nasıl yapılır?


83

docker-machine sürüm 0.2.0 docker sürüm 1.6.2

Ben kullanıyorum VirtualBox kullanarak bir makine oluşturmak için liman işçisi-makineyi . Her şey yolunda gidiyor, ancak makinenin kendisine sızmak istiyorum ve bunun nasıl yapılacağına dair hiçbir talimat bulamıyorum. Ssh bağlantı noktasına bağlanabilirim:

ssh $(docker-machine ip dev)

Ancak hangi kullanıcı adı / şifre / kimlik dosyasının kullanılacağı konusunda hiçbir fikrim yok.


4
Eğer -1, bir yorum yazıp bu soruda neyin yanlış olduğunu açıklayın ve soruyu soranın düzeltmesine izin verin.
Roy Truelove

bir konteyner içinde bağlanmak docker exec -it my_container /bin/bashiçin önerilen
user2915097

@ user2915097 Soru, bir liman konteyneri değil makinenin kendisine ssh vermekti
Roy Truelove

1
Pek çok Docker sorusu, programlama içeriği yoksa olumsuz oylanır. Muhtemelen, bu soru SF ile ilgili olmalı, ancak bu gerçekten bir karar çağrısı.
Adrian Mouat

Yanıtlar:


121

Docker-machine ana bilgisayarlarında sadece çalıştırarak oturum açabilirsiniz.

docker-machine ssh default

(Burada "varsayılan" ana bilgisayarı kullanarak)

Kimlik dosyaları altında saklanmalıdır ~/.docker/machine/machines. Bir kapsayıcıda oturum açmak istiyorsanız (ana bilgisayarın aksine), docker execuser2915097 tarafından önerilen şekilde kullanın.


Bu yüzden başka bir PC'ye sahibim (uzaktaki ana bilgisayarı kurmak için kullanılandan farklı) ve bu PC'deki docker-machine aracılığıyla ona erişmek istiyorum (tıpkı provizyon için kullanılan bilgisayardan yaptığım gibi). Bunu nasıl yapacağım?
Mahori

71

Eğer gerçekten bunu yapmanız gerekiyorsa ssh, bu docker 1.8.2 ile çalışmaktır

init docker:

eval "$(docker-machine env default)"

IP'yi varsayılan docker makinenizden alın:

docker-machine ip default

bu şöyle bir şey yazdırır: 192.168.99.100

ssh docker@192.168.99.100

şifre, tcuserancak kimlik dosyasını da kullanabilirsiniz, diğer cevaba bakın


8
Parolanın olduğunu nasıl bildiğinizi çok merak ediyorum tcuser. Sırrınızı açıklar mısınız lütfen? :-)
fmquaglia

2
başka bir yerde bulundu, ancak burada da görebilirsiniz: github.com/docker/machine/search?utf8=%E2%9C%93&q=tcuser
timaschew

25

Sonunda bir cevap buldum:

Docker Toolbox (Docker Machine) ile Windows'tayım.

I Eğer docker-machine -D ssh default, ben SSH parametreleri olması gerektiğini bulmak:

Ana Bilgisayar: localhost
Bağlantı Noktası: 51701
Kullanıcı: docker
Anahtar: .docker \ machine \ Machines \ default \ id_rsa

Putty / MobaXterm ayarlarımı eşleşecek şekilde değiştirdiğimde, işte, konteynere SSH yapabilirim.


Hey, teşekkür ederim. Cevabınızı sonuçların üstünde buldum. Beni saatlerce süren hayal kırıklığından kurtardı. +1
f123

1
Eklemek gerekirse, benim durumumda SSH portu 58361 idi. -D bayrağı kullanıldığında gerekli tüm detaylar yazdırılır. 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}
rohitmohta

Onu nereden alabilirim docker-machine inspect? Driver->IPAddressDeğişkende yerel olmayan adres
yazdı

12

Dışarıdaki bilgisayar korsanları için, burada 'aktif' docker makinesine ssh yapacak bir betik var. Bu aynı zamanda size ssh_key, ssh_port ve ssh_user değerlerini verir rsyncve localhost ile VM arasında benzer şeyler yapmayı mümkün kılar .

#!/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

Bunu kopyalayıp terminalinize, satır için satıra yapıştırabilirsiniz ve çalışacaktır. Veya, komut dosyasını bir işlev haline getirin ve adı argüman olarak besleyin.


5

Herhangi bir nedenle sshkomutu kullanmak yerine kullanmayı tercih docker-machine sshederseniz, şunu yapabilirsiniz:

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

2

Mac OX için, makine ve anahtarları burada bulunur (anahtarların orada olduğundan emin olun, aşağıdaki gibi bir şey:

~/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) mevcut sanal cihazları listeleyin.

> ~/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

Benim durumumda, makinenin adı varsayılandır. Bu yüzden sadece

~/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

Gördüğünüz gibi, docker-machine / instance'a ssh yapabiliyorum.

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

Bunu da takip edebilirsiniz> nasıl yapılır - docker


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.