2016-09-26 1 views
1

Так что моя проблема связана с установкой каталогов хост-компьютеров из моего macbook osx в контейнер, запущенный внутри машины.docker составить каталог хоста mount на osx с xhyve

В моей предыдущей компании они использовали devops, и мы использовали докер с виртуальным боксом, и я заметил, что они использовали VBoxManage для монтирования каталогов в докер-машину и оттуда монтировали эти папки в контейнеры.

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

Я хочу разместить базы данных и кодовые базы, размещая их внутри контейнеров nginx, а затем, когда код находится на главном компьютере, используйте IDEA для редактирования кода, который затем дает мне рабочую платформу.

Однако, когда я следую инструкциям, которые, как я думаю, должны работать, он работает неправильно.

Например, моя конфигурация Nginx как это:

FROM nginx:latest 
RUN rm /etc/nginx/conf.d/default.conf 
ADD ./default.conf /etc/nginx/conf.d/ 
EXPOSE 80 
EXPOSE 443 

И мой докер сочинять, как это:

version: "2" 
services: 
    nginx_php: 
    build: docker/nginx 
    ports: 
     - "10000:80" 
    volumes: 
     - .:/var/test 

Теперь, когда я делаю докер-компоновать, затем снаряд в docker container с помощью «docker exec -it bash». Я могу перечислить каталоги и найти/var/test, и он содержит SOMETHING, но не то, что я ожидаю.

Например, в "." каталог, который я использовал в инструкции томов в моей документации докеры, у меня есть каталог, называемый проектами, и в/dev/test в контейнере докера, я нахожу проекты.

Однако, я не нахожу «стеки», который является только старым каталогом слева, не имеет значения, что это такое, но я его не нахожу, поэтому он, похоже, установил «.». но это не отображает все, только определенные вещи.

Итак, я сделал это еще один шаг, я создал каталог под названием «анги» перед этим процессом, и если я перечислю содержимое проектов, я могу увидеть каталог angi, как я ожидал.

Итак, сделав еще один шаг, я создал каталог под названием «обезьяна», но когда я перестрою контейнеры и запустил их снова, я вижу «/ projects/angi», но я не вижу »/ projects/monkey «

Так что wtf .... как будто он монтирует половину файловой системы или выборочно показывает мне определенные части или что-то в этом роде, я не уверен, как монтировать каталоги хоста сейчас, потому что я не получаю результаты, которые я ожидаю ,

Кто-нибудь знает, что может быть неправильным?

+0

Я не нашел решения для своей проблемы, кроме как остановить использование старого докера и использовать Docker для Mac вместо этого, я описал проблему в этом github: https://github.com/zchee/docker-machine -driver-xhyve/вопросы/136 –

ответ

1

Я в одной лодке. У меня установлен docker/docker-machine/docker-machine-driver-xhyve (через доморощенный) и эта проблема.

Я думаю, что происходит то, что вы создаете том на хосте, который в этом случае является докер-машиной, а не вашим Mac OS хостом. Я думаю, что нужно еще один прыжок ... Как это происходит, я не уверен.

Но я могу подтвердить, что использование садового разнообразия в чистом докере приложение позаботится об этом для вас.

1

Как указал Даниил, емкость контейнера MacOS Docker монтируется не для размещения MacOS, а для промежуточной VM.

Таким образом, есть два варианта

Вы можете скопировать содержимое, нужно VM с помощью (если виртуальная машина с именем по умолчанию)

docker-machine scp [localfiles] default:./ 

Или вы можете сделать дополнительный шаг полуавтомат с помощью SSHFS:

docker-machine mount default:[/mountpoint] [localpath] 

Второй вариант потребует sshfs, который можно получить от варева

brew tap caskroom/cask 
brew cask install osxfuse 
brew install sshfs 

Более подробная информация на https://docs.docker.com/machine/reference/mount/

Также будьте осторожны, так как это один вариант способа синхронизации. Если вам нужно что-то получить с машины, убедитесь, что вы ее отскочили.