Где находится / var / lib / docker в Mac / OS X

Я ищу папку /var/lib/docker на своем Mac после установки докера для Mac.

С docker info я получаю

    Containers: 5
     ...
    Server Version: 1.12.0-rc4
    Storage Driver: aufs
     Root Dir: /var/lib/docker/aufs
     Backing Filesystem: extfs
     Dirs: 339
     Dirperm1 Supported: true
    ...
    Name: moby
    ID: LUOU:5UHI:JFNI:OQFT:BLKR:YJIC:HHE5:W4LP:YHVP:TT3V:4CB2:6TUS
    Docker Root Dir: /var/lib/docker
    Debug Mode (client): false
    ....

Но у меня нет каталога /var/lib/docker на моем хосте.

Я проверил /Users/myuser/Library/Containers/com.docker.docker/, но ничего не нашел. Есть идеи, где он находится?


person christian    schedule 22.07.2016    source источник
comment
Он расположен внутри виртуальной машины, которую docker создает для обеспечения необходимой среды Linux.   -  person larsks    schedule 22.07.2016
comment
Может быть, этот файл: /Users/myuser/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2   -  person christian    schedule 22.07.2016
comment
Это образ диска, лежащий в основе виртуальной машины, да. Но если вы хотите возиться с содержимым этого каталога, вам нужно будет войти в саму виртуальную машину. Вы можете найти инструкции для этого на странице docs.docker.com/v1.8/installation / mac   -  person larsks    schedule 22.07.2016
comment
спасибо, увеличение этого файла работает с qemu-img resize Docker.qcow2 + 5g forum.docker.com/t/   -  person christian    schedule 22.07.2016
comment
Вы знаете, где найти этот каталог? @Christian   -  person Jason Xu    schedule 02.08.2016
comment
@jason не совсем, я думаю, что он встроен в /Users/myuser/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-‌ linux / Docker.qcow2   -  person christian    schedule 02.08.2016


Ответы (11)


См. этот ответ

При использовании приложения Docker для Mac кажется, что контейнеры хранятся в виртуальной машине, расположенной по адресу:

~ / Библиотека / Контейнеры / com.docker.docker / Data / com.docker.driver.amd64-linux / Docker.qcow2

person PeterM    schedule 02.09.2016
comment
Если вы пришли сюда из Google, прокрутите вниз, чтобы найти правильный ответ. - person user1717828; 16.09.2018
comment
Думаю, это был ответ. Но сейчас я использую v20.10, в ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux директории ничего нет. - person Tony Chou; 26.01.2021

Как упоминалось в ответах выше, вы найдете его в:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

Как только вы запустите tty, вы можете перейти к /var/lib/docker

person Mik jagger    schedule 19.12.2016
comment
одна небольшая модификация (под вашим домом, а не под корнем): screen ~ / Library / Containers / com.docker.docker / Data / com.docker.driver.amd64-linux / tty - person pdenti; 01.01.2017
comment
Работает! Но как мне выйти из этой оболочки? Ctrl + d, exit и logout не работают. - person thomaskonrad; 31.03.2018
comment
Вы можете отсоединиться от экрана с помощью ctrl + a + d - person Mik jagger; 02.04.2018
comment
При отключении сеанс экрана будет продолжаться. В этом можно убедиться, запустив screen -ls. Если вы уже отсоединились, запустите screen -X quit. Если у вас есть несколько сеансов экрана, вам нужно -S, чтобы указать имя сеанса. Если вы еще не отсоединились, нажмите ctrl + a,:, q, u, i, t, ENTER. Эти двое просто запускают команду выхода из экрана в сеансе. - person dosentmatter; 04.04.2018
comment
Я думаю, что сейчас он может находиться в ~ / Library / Containers / com.docker.docker / Data / vms / 0 / tty. - person Richard Collette; 03.08.2018
comment
@RichardCollette, на моей машине оба являются просто символическими ссылками на / dev / ttys000 - person dosentmatter; 22.08.2018
comment
@Mikjagger после запуска команды каждый раз выводит [экран завершается]. Не получается попасть в докер vm. И, как сказал @doesntmatter, в tty файле есть строка / dev / ttys000 - person HKIT; 09.08.2020
comment
Для меня, когда я пытался screen, он просто выходил немедленно. ls -l показал, что tty является символической ссылкой на /dev/ttys013, но эта точка монтирования не существует .. Вместо этого я использовал команду из gist.github.com/BretFisher/5e1a0c7bcca4c735e716abf62afad389, чтобы установить оболочку в докер vm: docker run -it --rm --privileged --pid=host justincormack/nsenter1 - person mowwwalker; 09.11.2020
comment
Думаю, это был ответ. Но сейчас я использую v20.10, там ничего нет ~/Library/Containers/com.docker.docker/Data/vms/0/tty директории. - person Tony Chou; 26.01.2021

Другие ответы здесь устарели, если вы используете Docker для Mac.

Вот как я смог попасть в виртуальную машину. Выполните команду:

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

Это путь по умолчанию, но сначала вам может потребоваться: cd ~/Library/Containers/com.docker.docker/Data/vms

а затем ls, чтобы увидеть, в каком каталоге находится ваша виртуальная машина, и соответственно заменить «0».

Когда вы находитесь внутри, вы можете просто увидеть пустой экран. Нажмите клавишу «Ввод».

На этой странице объясняется, что для выхода с виртуальной машины нужно нажать "Ctrl-a", затем "d"

person Dmitriy    schedule 12.12.2018
comment
Не полностью работает, потому что если вы выйдете из виртуальной машины и войдете в нее снова, вы получите испорченную оболочку. - person AbstractVoid; 25.01.2019
comment
У меня это не работает. Я получаю испорченную оболочку. Я прошел и убил предыдущие сеансы экрана, а затем попробовал снова. При нажатии Enter я получаю случайные символы. если вы нажмете Enter снова, новые случайные символы. И так далее - person Steig Hallquist; 08.10.2019
comment
чтобы выйти из экранной программы, используйте ctl-a, тогда ctl- \ /var/lib/docker находится в виртуальной машине, где вы находитесь после запуска screen, поэтому, например, ls /var/lib/docker и т. Д. - person Alexei Martianov; 06.11.2019
comment
Я избавился от беспорядочной оболочки screen -ls, а затем screen -X -S SESSION_NAME quit для каждого сеанса. Если вы отключитесь с помощью ctr-A, затем D, вы можете повторно подключиться к экрану с помощью screen -R и также получить чистую оболочку. - person Andreas Riedmüller; 28.04.2020

По состоянию на 2021 год, пользователи Mac легко получают доступ к виртуальной машине с помощью задокументированных методов и, следовательно, к объемам.

Есть способ Рокки Чен обнаружил, что проник в виртуальную машину Mac. С его помощью вы действительно можете осмотреть знаменитый /var/lib/docker/volumes.

docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh

Давайте рассмотрим метод:

  • -it означает "Оставить STDIN открытым, даже если он не прикреплен" + "Выделить псевдо-TTY"
  • --privileged предоставляет контейнеру все возможности. Разрешает особые случаи, такие как запуск докер.
  • --pid определяет использование пространства имен виртуальной машины хоста.
  • debian фактический образ, который нужно использовать.
  • nsenter - инструмент debian запускать программы в разных пространствах имен
  • -t - целевой PID
  • -m монтирует предоставленное пространство имен PID.
  • -u введите пространство имен Unix Time Sharing (UTS).
  • -n введите предоставленное пространство имен сети PID.
  • -i введите предоставленное пространство имен IPC PID.

После запуска перейдите к /var/lib/docker/volumes/, и вы найдете свои тома.

Следующий вопрос, который мне нужно задать:

Как взять эти тома и сохранить их на хосте?

Ценю идеи в комментариях!

ОБНОВЛЕНИЕ ДЛЯ ПОЛЬЗОВАТЕЛЕЙ VSCODE

Если вы скачали официальное расширение Docker, вам будет светить солнце.

Расширение Docker

Просто проверьте тома в Visual Studio Code. Щелкните правой кнопкой мыши файлы, которые вы хотите разместить на своем локальном компьютере, и загрузите их. Это просто!

2-е ОБНОВЛЕНИЕ

С июля 2021 года Docker Desktop для Mac объявляет, что мы сможем получать доступ к томам напрямую из графического интерфейса, но только для учетных записей Pro и Team.

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

person RicarHincapie    schedule 09.01.2021
comment
Также работает для добавления файлов на том. После открытия тома с помощью Inspect в Visual Studio Code я перетаскиваю файлы в том. - person Joshua Swain; 20.04.2021
comment
*** Находясь в VS Code, прямо на томе и выберите «Исследовать в удаленном контейнере». - person Joshua Swain; 21.04.2021

Как сказал @Dmitriy:

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

и можно использовать ctrl a + d, чтобы отсоединить экран

и используйте screen -dr, чтобы снова прикрепить экран (поскольку, если вы просто снова прикрепите экран, текст терминала будет искажен).

Справочная информация

или, если вы хотите выйти, используйте ctrl + a + k, затем выберите y, чтобы убрать экран.

person May    schedule 23.03.2019

что-то вроде зомби-нити, но, как я только что нашел, вот еще одно решение, которое не требует экрана, не портит оболочку и т. д.

Путь, указанный в docker volume inspect <vol_name>

возвращает путь к контейнеру, например:

"Mountpoint": "/var/lib/docker/volumes/coap_service_db_data/_data"

компонент _data является последним компонентом пути, который вы установили в разделе volumes: службы с использованием данного тома, например:

volumes: - db_data:/var/lib/postgresql/data, очевидно, ваш пробег будет отличаться.

Самый простой способ добраться туда на Mac - это запустить небольшой запущенный контейнер и смонтировать корень хоста в каталог /docker в образе, это дает вам доступ к томам, используемым на хосте.

docker run --rm -it -v /:/docker alpine:edge

с этого момента вы можете cd на громкость

cd /var/lib/docker/volumes/coap_service_db_data/_data

person lbdl    schedule 10.10.2019

Похоже, в новой версии docker для Mac это переместилось в элемент пользовательского интерфейса, который вы можете увидеть здесь. При нажатии на кнопку с надписью CLI запускается терминал, который можно использовать для просмотра файловой системы докера. Кнопка Docker CLI

person Ricky Sahu    schedule 08.12.2020
comment
Значки отображаются на панели "Контейнеры". - person akauppi; 19.07.2021

Я думаю, что новая версия docker (моя версия 20.10.5) использует сокет вместо TTY для связи с виртуальной машиной, поэтому вы можете использовать команду nc вместо команды screen.

nc -U ~/Library/Containers/com.docker.docker/Data/debug-shell.sock
person Ehsan Ahmadi    schedule 03.06.2021
comment
команда остановлена - person clevertension; 20.06.2021
comment
у вас должен быть debug-shell.sock в ~ / Library / Containers / com.docker.docker / Data / path. у тебя есть это? - person Ehsan Ahmadi; 20.06.2021
comment
его немного дряблый, но он работает для меня. Хотя я пока не могу найти свои тома в этом vm. - person justin.m.chase; 17.07.2021

Этот путь исходит от хоста Docker (не из MacOS) до времени приложения Docker для Mac, где по умолчанию была виртуальная машина VirtualBox, а внутри этой виртуальной машины указанный путь существует (наверняка), теперь в приложениях Docker для Mac есть Docker Образ .qcow2, который является базой vm qemu. Прыгать внутрь этой виртуальной машины @ mik-jagger можно (но есть еще несколько)

person itiic    schedule 20.03.2017

Я бы сказал, что файл:

/var/run/docker.sock

Фактически находится по адресу:

/Volumes/{DISKNAME}/var/run/docker.sock

Если вы запустите это, это должно доказать это, если у вас запущен VirtualBox 5.2.8 или новее и общий ресурс для /Volumes настроен на автоматическое и постоянное подключение, И вы сгенерировали докер-машину по умолчанию в этой версии Virtualbox:

#!/bin/bash
docker run -d --restart unless-stopped -p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock portainer/portainer \
--no-auth

Затем войдите в Portainer по адресу: 192.168.99.100:9000 или localhost: 9000.

person djangofan    schedule 14.04.2018

Запустить:

docker run -it --privileged --pid=host debian nsenter -t 1 -a bash
ls /var/lib/docker
person Rafael Eyng    schedule 29.09.2020