Docker: совместное использование тома в Windows с помощью Docker Toolbox

Я пытаюсь настроить среду разработчика через контейнер Docker на моем компьютере с Windows 7.

Я установил панель инструментов Docker для Windows.

У меня есть изображение с Apache и PHP 5.6 внутри, и вот оно:

FROM php:5.6.15-apache

RUN apt-get update && apt-get install -y \
apt-utils vim git php5-mysql php5-memcache php5-memcached php5-intl \
wget
RUN apt-get install libapache2-mod-php5 -y -o Dpkg::Options::="--force-confdef"RUN docker-php-ext-install mbstring
RUN docker-php-ext-install pdo pdo_mysql
RUN apt-get install libcurl4-gnutls-dev -y
RUN docker-php-ext-install curl
RUN a2enmod rewrite

ENV APACHE_RUN_USER myname
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid

EXPOSE 80

COPY php.ini /usr/local/etc/php/php.ini
COPY apache-config.conf /etc/apache2/sites-enabled/000-default.conf
RUN echo "ServerName 127.0.1.1" >> /etc/apache2/apache2.conf

Это изображение создано, и я вижу его, когда запускаю «образы докера» в терминале быстрого запуска Docker.

В моем apache-config.conf у меня просто есть крошечный виртуальный хост для доступа к тестовому веб-сайту только с файлом index.php.

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

docker run --name=php5.6_container --rm -v "//c/sites:/var/www/html" -p 80:80 -p 8080:8080 php5.6

Я получаю следующую ошибку:

AH00112: Warning: DocumentRoot [/var/www/html/test] does not exist
AH00112: Warning: DocumentRoot [/var/www/html/test] does not exist
[Tue Dec 08 16:36:37.703143 2015] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) configured -- resuming normal operations
[Tue Dec 08 16:36:37.703733 2015] [core:notice] [pid 1] AH00094: Command line: '
apache2 -D FOREGROUND'

Похоже, мой вариант громкости не учитывается. И контейнер не создан.

Что я могу делать не так?

19

Решение

См. Примечание для Windows и Mac на https://docs.docker.com/engine/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume. В частности:

Если вы используете Docker Machine на Mac или Windows, ваш демон Docker имеет только ограниченный доступ к вашей файловой системе OS X или Windows. Docker Machine пытается автоматически предоставить общий доступ к вашему каталогу / Users (OS X) или C: \ Users (Windows).

По сути, вам нужно будет переместить файлы вашего сайта в такое место, как c:\Users\sites и затем смонтировать, используя что-то вроде предложенного в документации:

docker run --name=php5.6_container --rm -v "/c/Users/sites:/var/www/html" -p 80:80 -p 8080:8080 php5.6
53

Другие решения

Шаг 1: C:/Program Files/Oracle/VirtualBox/VBoxManage sharedfolder add default -name $shared_folder -hostpath d:/data

Чтобы показать общие папки:

VBoxManage showvminfo default | less

Шаг 2 (а): mount -t vboxsf -o uid=1000,gid=50 $shared_folder /data

Шаг 2 (б): Добавление автомонтирования в boot2docker

Когда вы вошли в систему, отредактируйте / создайте (как root) /mnt/sda1/var/lib/boot2docker/bootlocal.sh добавив блок ниже в файл, sda1 может отличаться для вас …


mkdir -p /data
mount -t vboxsf -o uid=1000,gid=50 $shared_folder /data

Затем, docker-machine restart default

Шаг 3: Добавление тома при запуске контейнера (например, gogs)
docker run --name=gogs -rm --net=host -d -v /fuple:/data gogs/gogs

4

  • Открыть «Oracle VM VirtualBox»
  • Как только «выбран по умолчанию», нажмите «Конфигурация»
  • Зайдите в «Стриженые папки» Добавьте нужную папку
  • Затем перезапустите по умолчанию, набрав в консоли

    перезапуск докер-машины по умолчанию

1

Это сообщение «ПРЕДУПРЕЖДЕНИЕ», а не сообщение об ошибке. Вы уверены, что ваш контейнер не создан? Вы проверяли с помощью команды «docker ps -a»?

Если сообщение является основной причиной вашей проблемы, вы должны разобраться в несуществовании / var / www / html / test внутри вашего контейнера. Если это не нужно, вы должны удалить его из конфигурации apache (возможно, внутри файла /etc/apache2/sites-enabled/000-default.conf или /etc/apache2/apache2.conf).

Если / var / www / html / test нужен, вы можете попробовать добавить

RUN mkdir /var/www/html/test

внутри вашего Dockerfile, чтобы убедиться, что каталог существует.

Кроме того, чтобы попытаться отладить проблему, вы можете попробовать запустить контейнер без использования тома. Если ошибки нет, вам следует ввести контейнер («docker exec -it php5.6_container bash»), чтобы отладить потенциальную проблему внутри вашего контейнера и проверить структуру вашего контейнера.

0

Я думаю, что для параметров громкости Docker двойные кавычки не требуются:

docker run --name=php5.6_container --rm -v //c/sites:/var/www/html -p 80:80 -p 8080:8080 php5.6

Проверьте, работает ли он. Я не уверен.

Смотрите пример сопоставления тома на Управление данными в контейнерах.

0
По вопросам рекламы [email protected]