Як отримати доступ до віртуальної машини, створеної докерським HyperKit?


78

Docker для Mac використовує Linux VM, створений HyperKit, для зберігання та запуску контейнерів на Mac.

За допомогою Docker Toolbox я можу просто відкрити VirtualBox і отримати доступ до віртуальної машини докер-машини. Але як з Docker для Mac, як отримати доступ до віртуальної машини, створеної HyperKit?

Відповіді:


143

Оновлення 2019-01-31, завдяки оновленню ru10, тепер є кращий спосіб:

screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

Оригінальна відповідь:

Через деякий час я знайшов наступний спосіб отримати оболонку віртуальної машини, яку створив HyperKit:

Запустити з терміналу:

screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

Ви побачите порожній екран, потім введіть enter, Ви отримаєте запит на вхід. Увійдіть як rootі натисніть Enter, ви отримаєте оболонку (без пароля), ви отримаєте оболонку:

введіть тут опис зображення

Щоб вийти з сеансу, введіть Ctrl-A k(потім yдля підтвердження).

Це трохи хакі, але, здається, це працює зараз (Вересень 2016) (Вересень 2017).


1
Для мене це абсолютно зламано. Я можу підключитися, але щось глибоко не так із налаштуваннями ТЕРМІНУ або способом передачі даних. Я отримую нефункціональний сеанс терміналу, який втрачає дані і не правильно форматується. Я пробую більше способів, можливо, скинути сесію, але поки що це не вдається.
Gerry Gleason

для мене це все ще працює (лютий 2017 1.13.0-beta39 з використанням емулятора терміналу iterm2)
Jauco

1
Для цього їм потрібен кращий путівник. Я зміг слідувати вашим інструкціям і потрапити у віртуальну машину. У моєму випадку, після першого натискання клавіші Enter, це просто привело мене до shзапиту на ВМ. Коли я побіг ls -lцим ttyшляхом, виявилося, що на нього є посилання /dev/ttys001, яке набагато простіше ввести.
Спенсер Вільямс

Що ми можемо зробити з цим інтерфейсом? Наприклад, я не можу запустити node, я скопіював його десь в іншому місці.
Inanc Gumus

Або це дозволяє мені підключитися до контейнера network_mode = host?
Інанк Гумус,

47

Mac OS High Sierra Docker, версія 18.06.0-ce-mac70 (26399)

screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

замість

screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

4
Дякуємо за оновлений шлях. Прийняту відповідь потрібно доповнити цим.
seren

Хм ... ~/Library/Containers/com.docker.docker/Data/vms/0/ttyНатомість я отримую помилку "Не вдається виконати дозвіл" у MacOs Catalina та DFD v2.3.0.4
demisx,

це через помилку: github.com/docker/for-mac/issues/4822
lqbweb

9

Згідно з цим коментарем до випуску GitHub , який підтримує Docker, рекомендований спосіб доступу до віртуальної машини - через привілейований контейнер docker.

Спробуйте увійти у віртуальну машину: (я рекомендую це замість використання екрана на TTY)

$ docker run -it --privileged --pid=host justincormack/nsenter1

1
це у мене працює, доступ до tty в каталіні не зробив
ксенотерацид
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.