Wie ssh in die Docker-Maschine VirtualBox-Instanz?

81

Docker-Maschine Version 0.2.0 Docker-Version 1.6.2

Ich benutze Docker-Maschine, um eine Maschine mit VirtualBox zu erstellen . Alles funktioniert gut, aber ich möchte in die Maschine selbst ssh und ich finde keine Anweisungen, wie das geht. Ich kann mich mit dem SSH-Port verbinden:

ssh $(docker-machine ip dev)

Aber ich habe keine Ahnung, welchen Benutzernamen / Passwort / Identitätsdatei ich verwenden soll.

Roy Truelove
quelle
4
Wenn Sie -1 einen Kommentar abgeben und erklären, was mit dieser Frage nicht stimmt, und dem Fragesteller erlauben, Änderungen vorzunehmen.
Roy Truelove
Die empfohlene Docker-Methode zum Herstellen einer Verbindung innerhalb eines Containers finden docker exec -it my_container /bin/bashSie im Dokument docs.docker.com/reference/commandline/cli/#exec
user2915097
@ user2915097 Die Frage war, in die Maschine selbst keinen Docker-Container zu ssh
Roy Truelove
1
Viele Docker-Fragen werden abgelehnt, wenn sie keinen Programmierinhalt haben. Diese Frage sollte sich wohl auf SF beziehen, aber es ist wirklich ein Urteilsspruch.
Adrian Mouat

Antworten:

120

Sie können sich bei Docker-Computer-Hosts anmelden, indem Sie einfach ausführen

docker-machine ssh default

(Verwenden Sie hier den "Standard" -Host)

Die Identitätsdateien sollten unter gespeichert werden ~/.docker/machine/machines. Wenn Sie sich bei einem Container anmelden möchten (im Gegensatz zum Host), verwenden Sie ihn docker execwie von user2915097 vorgeschlagen.

Adrian Mouat
quelle
Ich habe also einen anderen PC (anders als den, der zum Einrichten des Remote-Hosts verwendet wurde) und möchte auf diesem PC über eine Docker-Maschine darauf zugreifen können (genau wie bei dem, der für die Bereitstellung verwendet wurde). Wie gehe ich vor?
Mahori
71

Wenn Sie es wirklich über tun müssen, funktioniert sshdies mit Docker 1.8.2

Init Docker:

eval "$(docker-machine env default)"

Holen Sie sich die IP von Ihrem Standard-Docker-Computer:

docker-machine ip default

das druckt so etwas aus: 192.168.99.100

ssh [email protected]

Passwort ist tcuseraber Sie können auch die Identitätsdatei verwenden, siehe andere Antwort

timaschew
quelle
8
Ich bin sehr gespannt, wie Sie erfahren haben, dass das Passwort lautet tcuser. Würden Sie bitte Ihr Geheimnis preisgeben? :-)
fmquaglia
2
woanders gefunden, aber Sie können es auch hier sehen: github.com/docker/machine/search?utf8=%E2%9C%93&q=tcuser
timaschew
25

Schließlich fand ich eine Antwort:

Ich bin unter Windows mit Docker Toolbox (Docker Machine).

Wenn ich docker-machine -D ssh default , finde ich, dass die SSH-Parameter sein sollten:

Host: localhost
Port: 51701
Benutzer: Docker
Schlüssel: .docker \ machine \ machine \ default \ id_rsa

Wenn ich meine Putty / MobaXterm-Einstellungen passend ändere, voila, kann ich SSH in den Container.

Jeffrey Hohenstein
quelle
Hey, danke. Finden Sie Ihre Antwort über den Ergebnissen. Rettete mich vor stundenlanger Frustration. +1
f123
1
In meinem Fall war der SSH-Port 58361. Alle erforderlichen Details werden gedruckt, wenn das Flag -D verwendet wird. 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 [email protected] -o IdentitiesOnly=yes -i C:\Users\<user>\.docker\machine\machines\default\id_rsa -p 58361] C:\Program Files\Git\usr\bin\ssh.exe}
Rohitmohta
Wo kann ich es bekommen docker-machine inspect? Es druckte nicht lokale Adresse in Driver->IPAddressVariable
falko
12

Für die Hacker da draußen gibt es hier ein Skript, das in die 'aktive' Docker-Maschine ssh wird. Auf diese Weise erhalten Sie auch die Werte für ssh_key, ssh_port und ssh_user, sodass Sie beispielsweise rsynczwischen dem lokalen Host und der VM arbeiten können.

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

Sie können das Zeile für Zeile kopieren und in Ihr Terminal einfügen, und es wird funktionieren. Oder machen Sie das Skript zu einer Funktion und geben Sie ihm den Namen als Argument.

Robert
quelle
5

Wenn Sie aus irgendeinem Grund lieber den sshBefehl als verwenden docker-machine sshmöchten, können Sie dies tun

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

Bei Mac OX befinden sich das Gerät und seine Schlüssel hier (stellen Sie sicher, dass Sie die Schlüssel dort haben, etwa wie folgt:

~/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) Liste der verfügbaren VMS.

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

In meinem Fall ist der Name des Computers Standard. Also nur

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

Wie Sie sehen können, kann ich in Docker-Maschine / Instanz 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

Sie können auch diesem> Howto-Docker folgen

zee
quelle
-1

Wir können auch über den folgenden Befehl in den Docker ssh -

Docker exec -it / bin / sh

jitenagarwal19
quelle