Làm thế nào để ssh vào phiên bản VirtualBox của docker-machine?


82

docker-machine phiên bản 0.2.0 docker phiên bản 1.6.2

Tôi đang sử dụng docker-machine để tạo một máy bằng VirtualBox . Mọi thứ hoạt động tốt nhưng tôi muốn ssh vào chính máy và tôi không tìm thấy hướng dẫn nào về cách thực hiện việc này. Tôi có thể kết nối với cổng ssh:

ssh $(docker-machine ip dev)

Nhưng tôi không biết tên người dùng / mật khẩu / tệp nhận dạng nào sẽ sử dụng.


4
Nếu bạn -1 đưa ra nhận xét và giải thích điều gì sai trong câu hỏi này và cho phép người hỏi sửa đổi.
Roy Truelove

cách docker gợi ý để kết nối bên trong một vùng chứa là docker exec -it my_container /bin/bashxem doc docs.docker.com/reference/commandline/cli/#exec
user2915097

@ user2915097 Câu hỏi đặt ra là tự đổ vào máy không phải thùng chứa docker
Roy Truelove

1
Rất nhiều câu hỏi Docker bị phản đối nếu chúng không có nội dung lập trình. Có thể cho rằng, câu hỏi này nên dành cho SF, nhưng nó thực sự là một cuộc gọi phán xét.
Adrian Mouat

Câu trả lời:


121

Bạn có thể đăng nhập vào máy chủ docker-machine bằng cách chạy

docker-machine ssh default

(Sử dụng máy chủ "mặc định" tại đây)

Các tệp danh tính nên được lưu trữ dưới ~/.docker/machine/machines. Nếu bạn muốn đăng nhập vào vùng chứa (trái ngược với máy chủ), hãy sử dụng docker exectheo đề xuất của user2915097.


Vì vậy, tôi có một PC khác (khác với PC được sử dụng để thiết lập máy chủ từ xa) và tôi muốn có thể truy cập nó thông qua docker-máy trên PC này (giống như tôi đang làm từ một máy đã sử dụng để cung cấp). Làm thế nào để tôi đi về điều đó?
Mahori

71

nếu bạn thực sự cần làm điều đó thông qua ssh, điều này đang hoạt động với docker 1.8.2

init docker:

eval "$(docker-machine env default)"

lấy IP từ máy docker mặc định của bạn:

docker-machine ip default

cái này in ra một cái gì đó như thế này: 192.168.99.100

ssh docker@192.168.99.100

mật khẩu tcusernhưng bạn cũng có thể sử dụng tệp danh tính, xem câu trả lời khác


8
Tôi rất tò mò về việc làm thế nào bạn biết được mật khẩu đó tcuser. Bạn có thể tiết lộ bí mật của mình không? :-)
fmquaglia

2
tìm thấy ở một nơi khác, nhưng bạn có thể nhìn thấy nó cũng ở đây: github.com/docker/machine/search?utf8=%E2%9C%93&q=tcuser
timaschew

25

Cuối cùng, tôi đã tìm ra câu trả lời:

Tôi đang sử dụng Windows với Hộp công cụ Docker (Máy Docker).

Nếu tôi docker-machine -D ssh default, tôi thấy rằng các thông số SSH phải là:

Máy chủ: localhost
Cổng: 51701
Người dùng
: docker Khóa: .docker \ machine \ machine \ default \ id_rsa

Khi tôi thay đổi cài đặt Putty / MobaXterm của mình để phù hợp, thì đấy, tôi có thể SSH vào vùng chứa.


Hey cảm ơn bạn. Tìm thấy câu trả lời của bạn trên đầu kết quả. Đã cứu tôi khỏi hàng giờ thất vọng. +1
f123

1
Để nói thêm, trong trường hợp của tôi, cổng SSH là 58361. Tất cả các chi tiết bắt buộc được in khi sử dụng cờ -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}
rohitmohta

Tôi có thể lấy nó từ docker-machine inspectđâu? Nó đã in địa chỉ không phải địa phương trong Driver->IPAddressbiến
falko

12

Đối với những tin tặc ngoài kia, đây là một đoạn script sẽ xâm nhập vào máy docker 'đang hoạt động'. Điều này cũng cung cấp cho bạn các giá trị cho ssh_key, ssh_port và ssh_user, giúp bạn có thể thực hiện những việc như rsyncgiữa localhost và 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

Bạn có thể sao chép và dán nó vào thiết bị đầu cuối của mình, từng dòng một, và nó sẽ hoạt động. Hoặc, biến tập lệnh thành một hàm và cấp tên cho nó làm đối số.


5

Nếu vì lý do nào đó mà bạn muốn sử dụng sshlệnh hơn là docker-machine ssh, bạn có thể làm

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

2

Đối với mac OX, máy và các phím của nó được đặt ở đây (hãy đảm bảo rằng bạn có các phím trong đó, giống như bên dưới:

~/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) danh sách vms có sẵn.

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

Trong trường hợp của tôi, tên của máy là mặc định. Vì vậy chỉ cần

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

Như bạn thấy, tôi có thể ssh vào docker-machine / instance.

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

Bạn cũng có thể làm theo điều này> howto - docker


-1

Chúng tôi cũng có thể ssh vào docker thông qua lệnh sau:

docker executive -it / bin / sh

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.