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

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

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

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

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

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

Enter image description here

docker@boot2docker:/$ 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/

5 ответов


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

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

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

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

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

docker-machine ssh default

затем выполните монтирование:

  1. создайте папку внутри виртуальной машины:sudo mkdir /VM_share
  2. подключите к нему папку 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
...


посмотреть этот ответ.

у меня есть Windows 10 Home edition с Docker toolbox 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, то вы должны следуйте инструкциям в принято отвечать.


используя Docker Toolbox, общий каталог может только быть /c/User:

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

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

команда Шаг 1&Шаг 2 в окне "терминал" Докер "краткое руководство" в реализации Шаг 1 & 2 этап может быть:

# 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. Only a 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. 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. `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
"

перезапустите виртуальную машину. Попробовать это: docker run --name php-fpm --rm -it -v /e:/var/www/html php:7.1.4-fpm /bin/bash

ссылки:


в системном трее, вы должны иметь милый Докер кит плавание. Щелкните правой кнопкой мыши и выберите Параметры.

Enter image description here

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

для подключения нашего каталога хоста (C:\data) в контейнере, мы идем использовать -v (volume) флаг при запуске контейнера. Пример выполнения показан здесь:

Enter image description here

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

docker run -v c:/data:/data **centos** ls /data

монтировать общую папку Windows guest с хостом Linux (имя виртуальной машины "по умолчанию"):

завершение работы' default ' VM:

cd "C:\Program Files\Oracle\VirtualBox"
VBoxManage controlvm default poweroff

добавить общую папку командной строки:

./VBoxManage sharedfolder add default -name win_share -hostpath "C:\docker\volumes"

Start VM (только безголовый интерфейс командной строки):

/VBoxManage startvm headless  default

подключение к ssh:

docker-machine ssh default

создать каталог sharedfolder VM:

sudo mkdir /sharedcontent

смонтировать папку Windows для размещения виртуальной машины:

sudo mount -t vboxsf win_share /sharedcontent