Подтвердить что ты не робот

Каков наилучший способ обмена файлами с Windows на Boot2docker VM

Я делаю мой код готовым к Windows, но мне нелегко поделиться с boot2docker.

Я также обнаружил, что boot2docker не может сохранять постоянные изменения. Например, я создаю папку /temp после перезагрузки boot2docker, эта папка исчезает, это очень неудобно.

Каков ваш путь, когда у вас есть код на окнах, но вам нужно их закрепить?

--- обновление ---

Я пытаюсь обновить параметр в Virtual Box и перезагрузить boot2docker, но он не работает на моей машине.

enter image description here

[email protected]:/$ ls -al /c
total 4
drwxr-xr-x    3 root     root            60 Jun 17 05:42 ./
drwxrwxr-x   17 root     root           400 Jun 17 05:42 ../
dr-xr-xr-x    1 docker   staff         4096 Jun 16 09:47 Users/
4b9b3361

Ответ 1

Boot2Docker - небольшая виртуальная виртуальная машина Linux, работающая на VirtualBox. Поэтому, прежде чем вы сможете использовать ваши файлы (из Windows) в Docker (который работает в этой виртуальной машине), вы должны сначала поделиться своим кодом с самой загрузкой Boot2Docker.

Для этого вы устанавливаете свою папку Windows в виртуальную машину при ее завершении (здесь предполагается имя VM default):

C:/Program Files/Oracle/VirtualBox/VBoxManage sharedfolder \
add default -name win_share -hostpath c:/work

(В качестве альтернативы вы также можете открыть интерфейс VirtualBox и установить папку на свою виртуальную машину так же, как на скриншоте!)

Теперь ssh в VM Boot2Docker для терминала быстрого запуска Docker:

docker-machine ssh default

Затем выполните mount:

  • Создайте папку внутри виртуальной машины: sudo mkdir /VM_share
  • Подключите к нему папку Windows: sudo mount -t vboxsf win_share /VM_share

После этого вы можете получить доступ к C:/work внутри вашей Boot2Docker VM:

cd /VM_share

Теперь, когда ваш код присутствует внутри вашей виртуальной машины, вы можете использовать его с Docker, либо установив его в качестве тома в контейнер:

docker-machine ssh default
docker run --volume /VM_share:/folder/in/container some/image

Или используя его при создании изображения Docker:

...
ADD /my_windows_folder /folder
...

Ответ 2

Смотрите ответ.

У меня есть домашняя версия Windows 10 с инструментами Docker 1.12.2 и VirtualBox 5.1.6.

Мне удалось смонтировать папку под C:\Users успешно в моем контейнере без каких-либо дополнительных шагов, таких как docker-machine ssh default.

Пример:

docker run -it --rm -v /c/Users/antonyj/Documents/code:/mnt ubuntu /bin/bash

Так что ваши файлы под C:\Users, вероятно, являются самой простой задачей.

Если вы не хотите иметь файлы под C:\Users, вам необходимо выполнить шаги в принятом ответе.

Ответ 3

使用 docker-toolbox, 共享 目录 仅能 是/c/User.Using docker-toolbox, общим каталогом может быть только /c/User

Недействительный каталог. Каталоги томов должны находиться в папке "Пользователи"

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

## 命令在"Docker Quickstart Terminal"中执行Step1&Step2即可。Command in the "Docker Quickstart Terminal" in the implementation of Step1 & Step2 can be.

# Step 1. 用命令行添加报错,在VirtualBox图像界面手工添加上的,如上图所示。Add the error in the command line, in the VirtualBox image interface manually add, as shown above.
"C:/Program Files/Oracle/VirtualBox/VBoxManage.exe" sharedfolder add default --name "E_DRIVE" --hostpath "e:\\" --automount

# Try 1. 只能临时起效,重启VM之后共享失效。Only temporary effect, restart VM after sharing failure.
#docker-machine ssh default "sudo mkdir -p /e" # Create a directory identifier, consistent with the windows drive letter
#docker-machine ssh default "sudo mount -t vboxsf -o uid=1000,gid=50 E_DRIVE /e"

# Try 2. 修改/etc/fstab做永久挂载不管用,每次重启/etc/fstab内容都会重置。Modify / etc / fstab do not use the permanent mount, each restart / etc / fstab content will be reset
#docker-machine ssh default "sudo sed -i '$ a\E_DRIVE   /e   vboxsf   uid=1000,gid=50    0    0' /etc/fstab"

# Step 2. 一行命令搞定e盘共享。或者修改`C:\Program Files\Docker Toolbox\start.sh`。参考:https://github.com/docker/machine/issues/1814#issuecomment-239957893
docker-machine ssh default "cat <<EOF | sudo tee /var/lib/boot2docker/bootlocal.sh && sudo chmod u+x /var/lib/boot2docker/bootlocal.sh
#!/bin/sh
mkdir -p /e
mount -t vboxsf -o uid=1000,gid=50 E_DRIVE /e
EOF
"

Затем перезапустите VM, попробуйте docker run --name php-fpm --rm -it -v /e:/var/www/html php:7.1.4-fpm /bin/bash

Ссылка:

Извините за мой бедный английский (переведенный google), надеюсь, что это поможет. Кстати, нет кода кода уценки?

Ответ 4

В системном лотке вы должны иметь симпатичное плавание докер-кита. Щелкните правой кнопкой мыши и выберите "Настройки".

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

Нажмите "Применить". Это вызовет диалог Credentials, и вам нужно будет указать текущие учетные данные Windows. Убедитесь, что вы правильно его дадите. Я также подозреваю, что вам может потребоваться быть администратором.

Чтобы монтировать наш каталог хоста (c:\data) в контейнере, мы будем использовать флаг -v (volume) во время запуска контейнера. Здесь показан пример прогона. введите описание изображения здесь

У меня есть centos в моем локальном контейнере докеров.

docker run -v c:/data:/data centos ls/data​​p >